2012-12-14 93 views
2

我假設參數來我的shell腳本將非常具有./x.sh subject N file1 file2 fileN 所以我從3拼接argv直到結束candidates=${@:3}shell腳本數組長度

現在我要檢查給出N我試圖用echo $((${#candidates[@]}))候選人的長度是否相同這總是返回1

我可以做echo "$#-2" | bc但是,我不應該能夠獲得數組大小?

我可以用bc做整數比較。但我必須知道候選人數組的大小,我沒有得到正確的答覆。

+1

什麼shell?許多shell甚至不支持數組! –

+0

是的,但是什麼外殼? '$ {@:3}'是許多shell中的語法錯誤。 –

+0

我正在使用bash shell –

回答

2

您正在分配candidates的方式不是創建數組。爲了使一個數組,這樣做:

candidates=(${@:3}) 

在bash中,你可以得到${#candidates[*]}數組中元素的個數。要檢查是否等於$2,只需要:

[[ ${#candidates[*]} == "$2" ]] 
+0

'candidates = $ {@:3} \t echo $ {#candidates [*]}'正在返回1 –

+0

'candidates'不是數組! –

+0

謝謝括號固定它。還有一個問題我在這裏切片3結束。但我怎麼能切片3到第1個元素? –