BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

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

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

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

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

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

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

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

admin@wsxdn.com:~$ declare -rx Linux_best_website="www.tecmint.com"

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

admin@wsxdn.com:~$ printf "%s" "$Linux_best_website" 

www.tecmint.com

次に、読み取り専用で実行可能ファイルである別の変数を宣言します。

admin@wsxdn.com:~$ declare -rx Linux_website="Linux_best_website"

現在の状況は、2つの変数を定義したことです。

値が「www.tecmint.com」である「Linux_best_website」
および値が「Linux_best_website」である「Linux_website」

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

admin@wsxdn.com:~$ printf "%s" "$Linux_website"

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

admin@wsxdn.com:~$ printf "%s" "$Linux_website" 

www.tecmint.com

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

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

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

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

admin@wsxdn.com:~/Desktop$ declare x=10

変数xの値を確認してください 、定義したばかりです。

admin@wsxdn.com:~/Desktop$ echo $yx

x10

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

admin@wsxdn.com:~/Desktop$ declare y=x

変数yの値を確認してください 、定義したばかりです。

admin@wsxdn.com:~/Desktop$ echo $y 

x

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

admin@wsxdn.com:~/Desktop$ eval y=$x

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

admin@wsxdn.com:~/Desktop$ echo $y 

10

フラ!この問題は修正され、「評価 ‘コマンドがレースに勝ちました:)

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

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

いいえ。 BASH変数 結果
1 auto_resume 停止したジョブのプロセスコマンド補完。
2 BASH シェルのパス。
3 BASH_ENV プロファイルファイルの名前を表示します
4 BASH_VERSION Bashのバージョンを表示します
5 BASH_VERSINFO 詳細なバージョン情報を表示します。
6 BASH_VERSINFO [0] メジャーバージョン番号(リリース)。
7 BASH_VERSINFO [1] マイナーバージョン番号(バージョン)。
8 BASH_VERSINFO [2] パッチレベル。
9 BASH_VERSINFO [3] ビルドバージョン。
10 BASH_VERSINFO [4] リリースステータス(たとえば、beta1)。
11 BASH_VERSINFO [5] MACHTYPEの値。
12 CDPATH コロンで区切られたディレクトリのリスト。
13 標準出力の1行あたりの文字数。
14 EUID 現在のユーザーのユーザーID。
15 FCEDIT fcコマンドのデフォルトのテキストエディタ。
16 FUNCNAME 楽しみの名前
17 グループ ユーザーがメンバーであるグループ。
18 HISTFILE コマンド履歴を含むファイル。
19 HOME ホームディレクトリの名前。
20 LINES 標準出力の水平線の数。
21 メール 受信メールをチェックするファイルの名前
22 OSTYPE オペレーティングシステムの名前。
23 OLDPWD 前の作業ディレクトリ
24 PWD 現在の作業ディレクトリ
25 ランダム 乱数を出力します
26 シェル 使用する優先シェル
27 タイムフォーマット timeコマンドの形式。
28 UID 現在のユーザーのID

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

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


  1. シェルスクリプト言語でのLinux「変数」の洞察–パート9

    Linuxシェルスクリプトに関する一連の記事はすでに書いています。 その時は暖かく迎えられ、今でも非常に重要でした。シェルスクリプトに関する記事のコレクションへのリンクは次のとおりです。 Linuxシェルスクリプトを学ぶ この記事では、変数を確認します。 、その実行とシェルスクリプトでの実装。 出力の保存 コマンドの出力は、標準出力またはファイルにリダイレクトでき、変数に保存することもできます。コマンドの出力が画面に収まらないほど大きい場合は、ファイルへの出力を変数に保存するオプションのみが残ります。出力を変数に保存することの利点の1つは、検査速度が速いことです。変数はメモリに保存さ

  2. Bash 変数チュートリアル – 6 つの実用的な Bash グローバル変数とローカル変数の例

    この記事は、進行中の bash チュートリアル シリーズの一部です。他のプログラミング言語と同様に、Bash にも変数が用意されています。 Bash 変数は、プログラムの存続期間中に必要となる情報を一時的に格納します。構文: VARNAME=VALUE 注: 変数の割り当てでは、「=」記号の周りにスペースを入れないでください。 VAR=VALUE を使用すると、シェルは「=」を記号として認識し、コマンドを変数割り当てとして扱います。 VAR =VALUE を使用すると、シェルは VAR がコマンドの名前であると想定し、それを実行しようとします。 シェルは変数の型を気にしません。変数には、