数値を含む変数の実行に問題があります。
これはうまくいきます。
sourceid_2="blah"
echo $sourceid_2
しかし、これはうまくいきません。
sourceid_2="blah"
i=2
echo $sourceid_$i
この問題を解決する方法についてのアイデアはありますか?アンダースコアを使用しようとしませんでしたが、役に立ちませんでした。
私の究極の目標は、 for i in {2..7} ループの変数に対して、次のようないくつかの作業を行うことです。
for i in {2..7}
do
echo $sourceid_$i
done
ベストアンサー1
echo $sourceid_$i
2つの別々の変数、および$sourceid_
を展開します$i
。目的のタスクを実行する最も簡単な方法は、間接参照を使用することです。
sourceid_2="blah"
i=2
var=sourceid_$i
echo "${!var}"
しかし、@dave_thompson_085が指摘したように、配列はしばしばこの種のタスクを実行するより良い方法です。
declare -a sourceid
sourceid[2]="blah"
i=2
echo "${sourceid[i]}"
配列は bash 拡張であり、より基本的なシェルでは使用できません。