linux shell 怎样比较两个数组的内容,并且把不同的部分输出
尝试的脚本,要找出folder_list比file_list多的元素,并且用一个数组保存起来#checkifthereareanyfilesaddedt=0formin"...
尝试的脚本,要找出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 展开
#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 展开
展开全部
unset 不能这么用,需要指定数组索引,也就是数组下标,而不是数组的值,你可以这样干:
#check if there are any files added
folder_list=(1 2 3 4 5)
file_list=(1 2)
declare -a result_list
t=0
flag=0
echo folder_list=${folder_list[*]}
echo file_list=${file_list[*]}
for m in "${folder_list[@]}"
do
for l in "${file_list[@]}"
do
if [ "$m" == "$l" ]; then
flag=1
break
fi
done
if [ $flag -eq 0 ]; then
result_list[t]=$m
t=$((t+1))
else
flag=0
fi
done
echo result_list=${result_list[*]}
弄个结果数组保存结果,把在file_list里找不到的folder_list值存到结果数组中。
#check if there are any files added
folder_list=(1 2 3 4 5)
file_list=(1 2)
declare -a result_list
t=0
flag=0
echo folder_list=${folder_list[*]}
echo file_list=${file_list[*]}
for m in "${folder_list[@]}"
do
for l in "${file_list[@]}"
do
if [ "$m" == "$l" ]; then
flag=1
break
fi
done
if [ $flag -eq 0 ]; then
result_list[t]=$m
t=$((t+1))
else
flag=0
fi
done
echo result_list=${result_list[*]}
弄个结果数组保存结果,把在file_list里找不到的folder_list值存到结果数组中。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询