ループ内で増分var名を作成するだけです。変数は「var名にサイクルの数」を使用する必要があります。
ループ内の例:
# on Cycle=1
MyVar$Cycle=Exec$Cycle # (equal to MyVar1=Exec1)
# on Cycle=2
MyVar$Cycle=Exec$Cycle # (equal to MyVar2=Exec2)
# etc...
では、どうすれば変数名を正しく設定できますか?
バッチ処理は簡単に機能します:
set MyVar%Cycle%=Exec%Cycle% ...
しかし、私はそれをバッシュで実現する方法を知りません。
もちろんこのように結ぶMyVar$Cycle=Exec$Cycle
動作しない。
増分varnameを設定できるようにするだけで、必要な値を時々与えることができます。私にとって、スクリプトはすべて正常に機能していますが、新しいvar名のセットはリアルタイムでは機能しません。
このタスクを解決する1つの可能な方法は、コマンド eval
を次のように使用することです。
#!/bin/bash
for i in {1..5}
do
eval "var$i"="$i"
done
# Output the result
for i in {1..5}
do
echo -n "\$var$i : "
eval echo "\$var$i"
done
出力例:
$ ./cycle.sh
$var1 : 1
$var2 : 2
$var3 : 3
$var4 : 4
$var5 : 5
ただし、そのような魔法を回避するために、スクリプトを arrays で動作するように調整することをお勧めします。
#!/bin/bash
for i in {1..5}
do
array["$i"]="$i"
done
# Output the result
for i in {1..5}
do
echo "\$array[$i]" : "${array[$i]}"
done
出力例:
$ ./cycle.sh
$array[1] : 1
$array[2] : 2
$array[3] : 3
$array[4] : 4
$array[5] : 5
[0]
ではなく[1]
です。