私は変数を設定ファイルから読み込みます。ファイルはこのようになっていること、例えば、言う:それは、変数名$cfg1
と$cfg2
を持つことになりますので、bash:変数の値が既存の変数の名前であることを確認してください
cfg1=hello
cfg2=there
私のスクリプトは、それを読み込みます。コマンドライン引数が定義済みの変数のいずれかと一致するかどうかを確認したい。つまり、script.sh cfg1
を実行するとif
文が渡されますが、script.sh cfg3
を実行すると失敗します。
私は\$$varname
の構文を知っていますが、正直なところ、どのように動作するのか分かりません。私は試しました:
if [[ \$$1 ]]
しかし、それはいつも通りです。
'-v'について教えてください。潜在的な混乱を避けるために、 '-v $ 1'は完全にここで動作します。なぜなら' $ 1'の_value_はテスト対象の変数の_name_です。 これとは対照的に、 '$ 1' _itself_が渡されたかどうかをテストするのに' -v $ 1'と '-v 1'のどちらも使わないでください(' $# 'を調べてください)。 – mklement0