linux shell 怎样比较两个数组的内容,并且把不同的部分输出
尝试的脚本,要找出folder_list 比file_list 多的元素,并且用一个数组保存起来
#check if there are any files added
t=0
for m in "${folder_list[@]}"
do
for l in "${file_list[@]}"
do
if [ "$m" == "$l" ]; then
unset $folder_list[$m]
fi
done
done
1回答
-
绝地无双
unset 不能这么用,需要指定数组索引,也就是数组下标,而不是数组的值,你可以这样干:#check if there are any files addedfolder_list=(1 2 3 4 5)file_list=(1 2)declare -a result_listt=0flag=0echo folder_list=${folder_list[*]}echo file_list=${file_list[*]}for m in "${folder_list[@]}"dofor l in "${file_list[@]}"doif [ "$m" == "$l" ]; thenflag=1breakfidoneif [ $flag -eq 0 ]; thenresult_list[t]=$mt=$((t+1))elseflag=0fidoneecho result_list=${result_list[*]}弄个结果数组保存结果,把在file_list里找不到的folder_list值存到结果数组中。