2013-04-27 41 views
0

我想比较两个数组在bash中的长度,以便确定是否继续操作。比较两个数组的长度(如果然后)

if [ "${videos[@]}" -eq "${subtitles[@]}" ]; then 
    i=0 
    for item in ${videos[@]} 
    do 
     mkvmerge -o SUB_${videos[i]} ${videos[i]} --track-name "0:English" -s 0 -D -A ${subtitles[i]} 
     rm ${videos[i]} 
     rm ${subtitles[i]} 
    i=$((i+1)) 
    done 
else 
    echo "** Aborting! File mismatch **" 
    exit 
fi 

当我运行它,我得到如下:

line 11: [: too many arguments 

11号线是片断的第一行。任何人都可以指出我正在犯的错误(或错误)吗?

谢谢!

+0

你也应该引用你所有的参数扩展。 – chepner 2013-04-27 15:02:03

回答

3
if [ "${#videos[@]}" -eq "${#subtitles[@]}" ]; then 
     ^    ^

阵列的长度是${#array[@]}部分前#

+0

修复它。谢谢! – user2327018 2013-04-27 14:54:09