シェルスクリプトで変数名を永久に設定する

シェルスクリプトで変数名を永久に設定する

スクリプトを実行するたびに変数名を変更する必要があります。変数があるとしましょう。

a="foo"
echo "Value is : $a"

それは印刷されます

Value is foo

しかし、同じスクリプトで変数の値を変更しています。

a="bar"

スクリプトを再実行すると印刷されます。

Value is bar

Unixでこれを達成できますか?

ベストアンサー1

この行は$a="bar"エラーメッセージを表示します。

bash: foo=bar: command not found

a文字列に設定するには、をbar使用しますa="bar"$a変数a$a="bar"意味がありません。

スクリプトを実行するたびに値を変更するには、少なくとも2つのことを実行できます。

  1. a環境変数を作成します。これはaスクリプトの外部で設定したことを意味しますexport

    export a="bar"
    

    aその後、通常どおりスクリプトを実行します(まず、環境から継承された値を上書きしないように変更する必要があります)。また、使用することができます

    a="bar" ./myscript.sh
    

    スクリプトに対してのみ変数を設定します(つまり、呼び出しシェルでは変数にはなりません)。

  2. スクリプトがコマンドラインから値を取得できるようにして、次のようにスクリプトを呼び出します。

    ./myscript.sh "bar"
    

    これでスクリプトが実行されます。

    a="$1"
    

    aコマンドラインパラメータで値を設定します。ここでは、$1「最初のコマンドライン引数」を意味します。

どの方法を使用しても、値が次のようになることを"$a"確認したい場合があります。合理的な(つまり、有効なデータを含む)使用する前に。

おすすめ記事