次のスクリプトを実行しようとしています。
#!/bin/sh
. ./test.prop
for ((i=0; i<10;i++)
do
echo $F($i)
done
ソース ファイルには、パラメーターの割り当てが含まれています。
F1=20
F2=30
F3=40
.
.
.
スクリプトの望ましい出力は次のようになります
10
20
30
40
.
.
.
の適切な構文は何$F($i)ですか? または私は単にそれを使用することはできませんか?
間接パラメーター展開を使用できます。
for ((i=0; i<10; i++)); do
f="F$i"
echo "${!f}"
done
なぜ配列を使用しないのですか?
F=(10 20 30 ...)
と
for i in {0..9}; do
echo ${F[i]}
done
おそらく使用する必要がありますeval:
eval "echo \$F$i"
Eval は、コマンドを評価してから実行するために使用され、コマンドを動的に生成できるようにします。最初のドル記号をエスケープすることにより、生成されたコマンドで明示的に使用されますが、2 番目のドル記号をエスケープすると、その値を変数名の生成に使用される数値に展開できます。$iに値「1」が含まれていると仮定すると、生成されるコマンドはecho $F1.
これが役立つことを願っています=)
grep コマンドを使用できます。
grep ^F prop.test | awk -F= '{print $2}'
これにより、 で始まるすべての行が grep さFれ、 の後に番号が出力され=ます。