2013-04-27 100 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