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

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

Linuxシェルスクリプトに関する一連の記事はすでに書いています。 その時は暖かく迎えられ、今でも非常に重要でした。シェルスクリプトに関する記事のコレクションへのリンクは次のとおりです。

  1. Linuxシェルスクリプトを学ぶ

この記事では、変数を確認します。 、その実行とシェルスクリプトでの実装。

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

出力の保存

コマンドの出力は、標準出力またはファイルにリダイレクトでき、変数に保存することもできます。コマンドの出力が画面に収まらないほど大きい場合は、ファイルへの出力を変数に保存するオプションのみが残ります。出力を変数に保存することの利点の1つは、検査速度が速いことです。変数はメモリに保存されるため、ファイルからの取得に比べて高速になる傾向があります。

スクリプト言語の変数

変数はシェルスクリプトで使用される重要なコンポーネントであり、bashコマンド「宣言」を使用して宣言されます。 」。変数を宣言するには、「レベル」と言います ‘、以下のコマンドを実行する必要があります。

$ declare LEVEL

注 :「タイプキャスト」を使用する必要があります 」、kornシェルの互換性のための組み込みステートメント。 「宣言」はより高度で、すべての機能が含まれているため、BASHを使用する場合に推奨されます。

ルール
  1. 変数名は、スクリプトでの変数の使用を正当化する必要があります。
  2. プログラム全体で同じ変数名を使用することを強くお勧めします。
  3. 変数名は大文字でも小文字でもかまいませんが、慣例によりシェルコマンドは小文字であるため、混乱を避けるために変数名を大文字で使用する必要があります。例:TOTAL_BILLED_AMOUNT、SELL_REPORT、ORDER_RECEIPTなど。

実装

変数には、等号( =)を使用して値を割り当てることができます。 )。空の文字列を変数に割り当てるには、等号の後に値を指定しないでください。

$ LEVEL =

変数「LEVEL」に格納されている値を確認してください。

$ printf "%i" $LEVEL

printf 、「 C」のほとんどのコマンド ‘プログラマーはデータを認識して印刷します。%i –整数を表します。 %cに置き換えることができます キャラクターまたは%c 文字列の場合、必要に応じて。

$ LEVEL:「 $」に注意してください 変数‘ LEVEL’ の値の代替として機能する‘ 。

サンプル出力
$ printf "%i" $LEVEL
0

変数に値を割り当てます。

$ LEVEL=0

変数に保存されているデータを確認してください。

$ printf "%i" $LEVEL
0

注 :どちらの場合も、変数に値を割り当てなかった場合と、値「 0」を割り当てた場合に注意してください。 ‘から変数‘ LEVEL ‘出力 0 。出力はどちらの場合も同じですが、シェルスクリプトは両方の変数宣言を異なる方法で処理します。

変数に新しい値を割り当てます。

$ LEVEL=121

変数に保存されているデータを確認してください。

$ printf "%i" $LEVEL
121

変数の設定を解除

宣言 はBASHコマンドであり、実行時にのみ変数を作成します。そのように作成された変数は、スクリプトが停止するか、変数が破棄されるまでメモリに残ります。

$ unset LEVEL

BASHの事前定義された変数

BASHは50を超えています 事前定義された変数。これらの変数の一部には、BASHに付加された特別な意味があります。たとえば、変数 RANDOM 乱数を出力します。設定を解除してから再度定義すると、元の変数値は永久に失われます。したがって、システム定義の変数は使用しないことをお勧めします。

これがいくつかの有用なBASH変数のリストです。

  1. BASH-Bashのフルパス名。
  2. BASH_ENV-シェルスクリプトで、スクリプトが開始される前に実行されたプロファイルファイルの名前。
  3. BASH_VERSION-Bashのバージョン(たとえば、2.04.0(1)-リリース)。
  4. 列-ディスプレイの1行あたりの文字数(たとえば、80)。
  5. HOSTNAME-コンピューターの名前。 Linuxの一部のバージョンでは、これはマシン名である可能性があります。その他の場合は、完全修飾ドメイン名にすることができます。
  6. HOSTTYPE-コンピューターのタイプ。
  7. HOME-ホームディレクトリの名前。
  8. OSTYPE-オペレーティングシステムの名前。
  9. PATH-実行するコマンドを見つけるための検索パスのコロンで区切られたリスト。
  10. PPID-シェルの親プロセスのプロセスID。
  11. PROMPT_COMMAND-PS1プライマリプロンプト文字列を設定する前に実行するコマンド。
  12. PWD-現在の作業ディレクトリ(cdコマンドで設定)。
  13. RANDOM-参照されるたびに0から32767までの乱数を返します。
  14. SHELL-使用する優先シェル。シェルを起動するプログラムの場合。
  15. TERM-端末エミュレーションタイプ(コンソールなど)。

単語分割のルール。

$ LEVEL=0
$ printf "%i" $LEVEL
0

AND

$ LEVEL=”0”
$ printf "%i" $LEVEL
0

どちらの場合も、出力は同じままです。では、見積もりを使用した場合の結果の違いは何ですか?

異なる変数データで同じことを確認しましょう。

$ LEVEL=0 ; 1 ; 2 ; 3 ; 4 ; 5
bash: 1: command not found 
bash: 2: command not found 
bash: 3: command not found 
bash: 4: command not found 
bash: 5: command not found
$ printf "%i" $LEVEL
0

言うまでもなく、出力は正しくありません。 BASHは「0」の後にスペースを取っています ‘は終了として、したがって変数の値は‘ 0として設定されます ‘。次に、以下のように変数の引用符を使用しようとします。

$ LEVEL=”0 ; 1 ; 2 ; 3 ; 4 ; 5”
$ printf "%s" $LEVEL 
0;1;2;3;4;5

それでも結果は正しくありません。 BASHは変数値を取得し、それらの間のすべてのスペースを削除しました。したがって、 printf 0、1、2、3、4、5を個別の値として解釈しませんでした。では、解決策は何ですか?

printf "%s" "$LEVEL" 
0 ; 1 ; 2 ; 3 ; 4 ; 5

うん!変数の置換を引用符で囲むことが解決策です。引用符はシェル内の文字をグループ化し、特殊文字を意味のある方法で解釈します。

引用符は連続して使用できます。変数の置換を引用符で囲むことをお勧めします。さらに、テキスト全体を引用から分離するために使用できます。これが例です。

$ LEVEL=5 
$ FLAG_MESSAGE="I HAVE CLEARED LEVEL""$LEVEL"". I Deserve appreciation." 
$ printf “%s” “$FLAG_MESSAGE”
“I HAVE CLEARED LEVEL5. I Deserve appreciation.”

引用符で囲まれたテキストのチャンクをスペースで区切ると、上記と同じ問題が発生します。 bashは、空白を終了として扱います。変数置換のもう1つの方法はです。

$ LEVEL=5

$ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

$ printf “%s” "$FLAG_MESSAGE" 
“I HAVE CLEARED LEVEL 5. I Deserve appreciation.”

一重引用符は、BASHによる特殊文字の印刷を制限します。

$ printf “%s” '$FLAG_MESSAGE'
“$FLAG_MESSAGE”

バックスラッシュ(/)

バックスラッシュは、1文字の単一引用符のように機能します。どのように印刷するか考えましたか( )?

$ printf "%c" "\""

%qの場合 printfでグループ化 、単語の間隔を確保するために、すべての単語の後に円記号を付けます。

$ LEVEL=5

$ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

$ printf “%q” "$FLAG_MESSAGE" 
“I\ HAVE\ CLEARED\ LEVEL\ 5.\ I\ Deserve\ appreciation.”

それは今のところすべてです。私たちは常に読者に役立つ記事を提供するよう努めています。上記の記事は膨大であるため、例を含む残りのトピックは、「変数の属性」、「変数のエクスポート」などを含む次の記事で作成されます。

それまでは、しばらくお待ちください。 Tecmint.comに接続してください。 。以下のコメントセクションで、貴重なフィードバックをお寄せください。


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

    変数について詳しく説明したBASHShellに関する最後の2つの記事は、読者の間で高く評価されました。私たちはTecmint-Team 詳細でカバーされている最新の、最新の、関連するトピックを提供することに非常に熱心です。さらに、私たちは常に対応するトピックの主要な視点に触れようとします。 これがLinux変数に関する最後の記事で、このトピックを閉じる前に、変数の置換とシェルで定義された変数を確認します。 Bashは、コマンドが実際に実行される前に変数置換を実行します。 Linux Bash Shellは、コマンドを実行する前にすべての「$」記号を検索し、それを変数の値に置き換えます。

  2. シェルスクリプトでの「Linux変数」の理解と記述–パート10

    Linuxシェルスクリプト言語は常にホットな話題であり、将来的には常にそうなるでしょう。シェルスクリプト言語は魔法のようで、他の言語と同じようにスクリプト言語でプログラムを実行するのはとても簡単です。ただし、私たちが行っていることと、その結果が期待されることについての深い知識が必要です。 私たちが読者のために書いたすべてのシェルスクリプトの記事は、最後の記事「Linux変数の洞察」を含めて高く評価されています。前回の記事を新しいレベルに拡張します。 変数属性 Linux環境の各変数には特定のオプションがあり、それらは「属性」と呼ばれます。これらのオプションまたは属性は、オンにすることがで