0

次のスクリプトを実行しようとしています。

#!/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)ですか? または私は単にそれを使用することはできませんか?

4

4 に答える 4

3

間接パラメーター展開を使用できます。

for ((i=0; i<10; i++)); do
    f="F$i"
    echo "${!f}"
done
于 2012-10-02T18:01:04.940 に答える
3

なぜ配列を使用しないのですか?

F=(10 20 30 ...)

for i in {0..9}; do
    echo ${F[i]}
done  
于 2012-10-02T18:02:23.533 に答える
2

おそらく使用する必要がありますeval

eval "echo \$F$i"

Eval は、コマンドを評価してから実行するために使用され、コマンドを動的に生成できるようにします。最初のドル記号をエスケープすることにより、生成されたコマンドで明示的に使用されますが、2 番目のドル記号をエスケープすると、その値を変数名の生成に使用される数値に展開できます。$iに値「1」が含まれていると仮定すると、生成されるコマンドはecho $F1.

これが役立つことを願っています=)

于 2012-10-02T18:01:12.320 に答える
1

grep コマンドを使用できます。

grep ^F prop.test | awk -F= '{print $2}'

これにより、 で始まるすべての行が grep さFれ、 の後に番号が出力され=ます。

于 2012-10-02T18:01:12.420 に答える