2017-11-09 41 views
1

bashシェルの場合。 私はループ範囲内の配列の可変長を与え、最後の要素まですべての要素を1つずつ出力しようとしています。私のコードは、スクリプト整数に配列の長さを変換する方法文字列をシェルスクリプトの整数に変換するには?

line 14: {0..9}: syntax error: operand expected (error token is "{0..9}") 

を実行中にエラーの下になって、この

for a in {0..$((${#array[@]}))}; do 
    echo "${array[$a]}" 
done 

のように見えますか?前もって感謝します!

+0

この作業はできません。変数が展開される前に中括拡張が行われる – Inian

答えて

-1
for a in `eval echo {0..$((${#array[@]}-1))}` 
do 
    # do stufff with $a like echo ${array[$a]} 
done 

は問題ないはずです。..マインドカウントが0からtotal-1に始まり、それが
$(())を使用して行われるものであること。

+1

算術コンテキスト演算子を使うことができるだけでは、 'eval'を使うことを推奨するのは安全ではないと思いませんか? 'for((i = 0; i <$ {#array [@]}; i ++))' – Inian

+0

両方のメソッドがうまくいきました。ありがとうございます:) – Satz

+0

@Inian:特定の状況、特にユーザーからの価値を受け入れる場合、その使用は危険な状態になることがあります。しかし、ここでは少し読めないけど、かなりストレートです。しかし、ループの 'c-style'はより読みやすく推奨されています。 – sjsam

関連する問題