BASH変数名に数値の問題が含まれています。

BASH変数名に数値の問題が含まれています。

数値を含む変数の実行に問題があります。

これはうまくいきます。

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_$i2つの別々の変数、および$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 拡張であり、より基本的なシェルでは使用できません。

おすすめ記事