これはできますが、変数の文字列を作成してから参照解除する必要があります。より単純なステートメントに短縮する方法はありますか?
#!/bin/bash
FRUITS="BANANA APPLE ORANGE"
BANANA_COLOUR="Yellow"
APPLE_COLOUR="Green or Red"
ORANGE_COLOUR="Blue"
for fruit in $( echo $FRUITS ); do
fruit_colour="${fruit}_COLOUR"
echo $fruit is ${!fruit_colour}
done
私はのようなものをたくさん試してみました${!"${fruit}_COLOUR"}
か\$${fruit}_COLOUR
および他の多くの変種を、しかし、働いている唯一の方法は、文字列を使用することです。
連想配列を使用して、これをよりきれいに行うこともできます。ただし、質問に対する直接的な回答ではないため、コメントとして追加してください。
—
パトリック
!
構文は、基本的には「二回代理」という変数の置換のフラグです。内部にあるもの${…}
が変数名でなければならないという要件は変わりません。そのため、別のメソッド(eval
)を使用しない限り、名前を含む変数の使用を避けることはできません。