Linuxでのネストされた変数の置換と事前定義されたBASH変数-パート11


変数について詳しく説明したBASHShellに関する最後の2つの記事は、読者の間で高く評価されました。 Tecmint-Teamは、詳細にカバーされた最新の関連トピックを提供することに非常に熱心です。さらに、私たちは常に対応するトピックの主要な視点に触れようとします。

これはLinux変数に関する最後の記事で、このトピックを閉じる前に、変数の置換とシェルで定義された変数を確認します。

Bashは、コマンドが実際に実行される前に変数置換を実行します。 Linux Bash Shellは、コマンドを実行する前にすべての「$」記号を検索し、それを変数の値に置き換えます。 Bash変数置換のプロセスは1回だけ実行されます。ネストされた変数がある場合はどうなりますか?

注:ネストされた変数とは、変数内で宣言された変数を意味します。以下の例で上記のシナリオを見てみましょう。

以下のように、読み取り専用で実行可能である変数を宣言します。

[email protected]:~$ declare -rx Linux_best_website="www.tecmint.com"

保存されている変数の値を確認してください。

[email protected]:~$ printf "%s" "$Linux_best_website" 

www.tecmint.com

ここで、再び読み取り専用で実行可能である別の変数を宣言します。

[email protected]:~$ declare -rx Linux_website="Linux_best_website"

状況は、2つの変数を定義しました。

そして、「Linux_website」、その値は「Linux_best_website」です

以下の1行のコマンドを実行すると、結果はどうなりますか?

[email protected]:~$ printf "%s" "$Linux_website"

最初に変数「 」を値「 Linux_best_website 」に置き換える必要があります。次に、「 」は値が「< b> www.tecmint.com 」。したがって、以下のコマンドを実行した場合の最終的な出力は次のようになります。

[email protected]:~$ printf "%s" "$Linux_website" 

www.tecmint.com

しかし残念ながら、これは状況ではありません。取得する出力は Linux_best_website です。

理由?うん! Bashは、変数の値を1回だけ置換します。変数を頻繁に置き換える必要があり、変数を複数回置き換える必要がある複雑なスクリプトやプログラムについてはどうでしょうか。

スクリプト内で変数置換の追加作業を複数回実行するコマンド「 eval 」があります。これは、全体をガラスのようにクリアにする例です。

変数 x を宣言します。その値は 10 です。

[email protected]:~/Desktop$ declare x=10

定義した変数 x の値を確認します。

[email protected]:~/Desktop$ echo $yx

x10

変数 y を宣言します。その値は x です。

[email protected]:~/Desktop$ declare y=x

定義した変数 y の値を確認します。

[email protected]:~/Desktop$ echo $y 

x

これが BASH の1回限りの変数置換の問題であり、余分な変数置換は実行されません。これを修正するために「 eval 」コマンドを使用しています。

[email protected]:~/Desktop$ eval y=$x

次に、変数 ‘ y ‘の値を確認します。

[email protected]:~/Desktop$ echo $y 

10

万歳!この問題は修正され、「eval」コマンドがレースに勝ちました:)

言うまでもなく、「 eval 」コマンドは、大規模なスクリプトプログラムで非常に役立ち、非常に便利なツールです。

この投稿の最後の部分は、BASHの事前定義された変数です。番号!このリストを見て慌てる必要はありません。いくつかを除いて、スクリプトを書き始める前にリスト全体を覚えておく必要はありません。学習プロセスの一環として、BASHの事前定義された変数リストを提示しています。

事前定義されたBASH変数の膨大なリストがあります。最も頻繁に使用されるリストを作成しようとしました。

それは今のところすべてです。別の興味深い記事でまたここに来ます。それまでは、TecMintにご注目ください。以下のコメントセクションで、貴重なフィードバックをお寄せください。

全著作権所有。 © Linux-Console.net • 2019-2022