タスクを簡単に実行するために、いくつかのUnixコマンドスクリプトとコマンドを実行する、私が管理していないシステムと対話しようとしています。
私はうまくいかない変数置換があり、それを防ぐためのコマンドを書くことができるかどうか疑問に思います。設定する必要がある変数が多すぎて空の変数を入力する機会があったらと思います。問題は、システムが空の変数を渡さず、変数がまったく設定されないことです。わかりました。
${option.VARIABLE}: エラーの置き換え
似たようなものを設定しようとしましたが、うまくいきませんでした。
if [ -z ${option.VARIABLE} ]; then option.VARIABLE="";
どんなアイデアがありますか?
答え1
ドットは変数名に有効な文字ではありません。 bashマニュアルは次のように言います(ここ)
名前
文字、数字、下線のみで構成され、文字または下線で始まる単語です。名前はシェル変数と関数名として使用されます。識別子とも呼ばれます。
しかし、私のksh93のマニュアルページには次のように記載されています。
定義。
[...]識別子は、文字または下線で始まる一連の文字、数字、または下線です。識別子は変数名の一部として使用されます。 vnameは、で区切られた1つ以上の識別子シーケンスです。オプションで . が前に付けられます。 Vname は関数名と変数名として使用されます。
この部分はあなたの質問に最も関連しているようです(強調)。
パラメータ拡張。
[...] 変数は vname で表されます。 vnameは最後です。すでに存在している必要があります。
この機能はbashではなくksh93にのみ存在します。スクリプトでそれを使用している場合は、ksh93で実行する必要があります。
答え2
私の思考に「。」変数名はコードを台無しにします。
option.VARIABLE
変数名をからに変更して変数から点を削除してみてくださいoptionVARIABLE
。