为了账号安全,请及时绑定邮箱和手机立即绑定

linux shell 怎样比较两个数组的内容,并且把不同的部分输出

linux shell 怎样比较两个数组的内容,并且把不同的部分输出

凤凰求蛊 2019-04-11 06:06:39
尝试的脚本,要找出folder_list 比file_list 多的元素,并且用一个数组保存起来#check if there are any files addedt=0for m in "${folder_list[@]}"dofor l in "${file_list[@]}"doif [ "$m" == "$l" ]; thenunset $folder_list[$m]fidonedone
查看完整描述

1 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

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值存到结果数组中。


查看完整回答
反对 回复 2019-04-12
  • 1 回答
  • 0 关注
  • 1797 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信