値を配列の要素に変更したいのですが、それを行うための構文がわかりません
for i in `seq 0 8`;
do
if [ ${config[$i]} = "value1" ]
then config[$i] = "value2" #<- This line
fi
done
値を配列の要素に変更したいのですが、それを行うための構文がわかりません
for i in `seq 0 8`;
do
if [ ${config[$i]} = "value1" ]
then config[$i] = "value2" #<- This line
fi
done
技術的には、そこで壊れているのは空白だけです。シェル構文では、演算子の周りにスペースを入れないでください:
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
次のように 2 つの余分なスペースを削除します。
config[$i]="value2"