10

値を配列の要素に変更したいのですが、それを行うための構文がわかりません

for i in `seq 0 8`;
do
    if [ ${config[$i]} = "value1" ]
        then config[$i] = "value2"    #<- This line
    fi
done
4

2 に答える 2

11

技術的には、そこで壊れているのは空白だけです。シェル構文では、演算子の周りにスペースを入れないでください:

config[$i]="value2"

ただし、他にも考慮したい小さなことがたくさんあります。たとえば、 の要素にconfig空白を含めることができる場合、テストが中断する可能性があります。[[これを避けるには、引用符または test キーワードを使用してください。

… if [[ ${config[$i]} = "value1" ]]
    then config[$i]="value2" …

seq非標準の外部実行可能ファイルです。組み込みの繰り返し構文を使用する方がよいでしょう。さらに、 のすべての要素に対して反復が行われると仮定すると、次のconfigようにするだけで済みます。

for ((i=0; i<${#config[@]}; i++));
do
    if [[ ${config[$i]} = "value1" ]]
        then config[$i]="value2"
    fi
done
于 2012-09-17T19:56:20.907 に答える
3

次のように 2 つの余分なスペースを削除します。

config[$i]="value2"
于 2012-09-17T19:59:57.193 に答える