これは私のスクリプトです。
load_1=15231
load_2=20547
load_3=24561
load_4=22874
f4=434
sum_1=`expr $load_1 + $f4`
sum_2=`expr $load_2 + $f4`
sum_3=`expr $load_3 + $f4`
sum_4=`expr $load_4 + $f4`
min=$sum_1
LIST1="1 2 3 4"
for x in $LIST1
do
if [ $sum_$x -lt $min ]
then
min=$sum_$x
f3=$x
fi
done
echo $min
echo $f3
次のコマンドを使用してスクリプトを実行したときの出力は次のとおりですbash -x
。
+ load_1=15231
+ load_2=20547
+ load_3=24561
+ load_4=22874
+ f4=434
++ expr 15231 + 434
+ sum_1=15665
++ expr 20547 + 434
+ sum_2=20981
++ expr 24561 + 434
+ sum_3=24995
++ expr 22874 + 434
+ sum_4=23308
+ min=15665
+ LIST1='1 2 3 4'
+ for x in '$LIST1'
+ [[ 1 -lt 15665 ]]
+ min=1
+ f3=1
+ for x in '$LIST1'
+ [[ 2 -lt 1 ]]
+ for x in '$LIST1'
+ [[ 3 -lt 1 ]]
+ for x in '$LIST1'
+ [[ 4 -lt 1 ]]
+ echo 1
1
+ echo 1
1
ループ変数 "x"の値をテスト条件変数に置き換え、次の値sum_x
を$sum_x
テスト条件に割り当てる必要があります。しかし、出力からわかるように、 'x'値は条件に直接適用されます。私は引用符と括弧のさまざまな組み合わせを試しましたが、何も効果がありませんでした。助けてください! !
ベストアンサー1
$sum_$x
あなたの質問は次のリンクとして解釈されます。$sum_
$x
~$ for x in $LIST1; do echo $sum_$x; done
1
2
3
4
したがって、あなたの質問です。あなたが望むものは使用することです
~$ for x in $LIST1; do echo $((sum_$x)); done
15665
20981
24995
23308