我假設參數來我的shell腳本將非常具有./x.sh subject N file1 file2 fileN
所以我從3拼接argv
直到結束candidates=${@:3}
shell腳本數組長度
現在我要檢查給出N
我試圖用echo $((${#candidates[@]}))
候選人的長度是否相同這總是返回1
。
我可以做echo "$#-2" | bc
但是,我不應該能夠獲得數組大小?
我可以用bc
做整數比較。但我必須知道候選人數組的大小,我沒有得到正確的答覆。
我假設參數來我的shell腳本將非常具有./x.sh subject N file1 file2 fileN
所以我從3拼接argv
直到結束candidates=${@:3}
shell腳本數組長度
現在我要檢查給出N
我試圖用echo $((${#candidates[@]}))
候選人的長度是否相同這總是返回1
。
我可以做echo "$#-2" | bc
但是,我不應該能夠獲得數組大小?
我可以用bc
做整數比較。但我必須知道候選人數組的大小,我沒有得到正確的答覆。
您正在分配candidates
的方式不是創建數組。爲了使一個數組,這樣做:
candidates=(${@:3})
在bash中,你可以得到${#candidates[*]}
數組中元素的個數。要檢查是否等於$2
,只需要:
[[ ${#candidates[*]} == "$2" ]]
'candidates = $ {@:3} \t echo $ {#candidates [*]}'正在返回1 –
'candidates'不是數組! –
謝謝括號固定它。還有一個問題我在這裏切片3結束。但我怎麼能切片3到第1個元素? –
什麼shell?許多shell甚至不支持數組! –
是的,但是什麼外殼? '$ {@:3}'是許多shell中的語法錯誤。 –
我正在使用bash shell –