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


Linuxシェルスクリプト言語は常にホットな話題であり、将来的には常にそうなるでしょう。シェルスクリプト言語は魔法のようで、他の言語と同じようにスクリプト言語でプログラムを実行するのはとても簡単です。しかし、それは私たちが何をしているのか、そして結果が何を期待するのかについての深い知識を必要とします。

私たちが読者のために書いたすべてのシェルスクリプトの記事は、最後の記事「Linux変数の洞察」を含めて高く評価されています。前回の記事を新しいレベルに拡張します。

変数属性

Linux環境の各変数には特定のオプションがあり、それらは「属性」と呼ばれます。これらのオプションまたは属性は、コマンド「declare」を使用して状況に応じて、必要に応じてオンおよびオフに切り替えることができます。

変数属性の例は、対応する変数の整数属性をオンにする「 -i 」というスイッチを使用することです。数値以外の値がスイッチ「 -i 」に渡されても、エラーメッセージはスローされず、整数の解釈として「 0 」が出力されます。ここでは、以下の例からより明確になります。

変数整数を宣言します、bill u003d 121

[email protected]:~$ declare -i bill=121

変動手形の値をprintfします。

[email protected]:~$ printf "%d\n" "$bill" 

121

変数値を文字列とします。可変請求書はすでに宣言されているので、2回目に宣言する必要はありません。変数の値をとして変更するだけです。

[email protected]:~$ bill=tecmint

ここで、変数billの値を再度printfします。

[email protected]:~$ printf "%d\n" "$bill" 

0

エラーメッセージの代わりに「 0 」があることに注意してください。

[email protected]:~$ declare -p bill 

declare -i bill="121"

ここで、 -p (印刷の略)スイッチが役に立ちます。

変数の属性をオフに切り替えるために必要なのは、切り替えの直前に + プラス)記号を付けることです。ここでは、以下の例からより明確になっています。

上記の変数の整数属性をオフに切り替えます。

[email protected]:~$ declare +i bill

変数の値を確認してください。

[email protected]:~$ printf "%d\n" "$bill" 

bash: printf: bill: invalid number
0

次に、スイッチ文字列を使用して変数の値を出力します。

[email protected]:~$ printf "%s\n" "$bill" 

tecmint

上記の例では、bashは数値以外の値をエラーとして判断できませんでしたが、 printf は、数値になる可能性があるものとできないものを解釈しています。

読み取り専用変数

読み取り専用メモリ( ROM )を聞いたことがあるかもしれませんが、読み取り専用変数とは何ですか? ROMとの類似点はありますか?

読み取り専用メモリのような読み取り専用変数は、一度割り当てられると値を変更できないものです。したがって、読み取り専用と呼ばれます。その変数の新しい値を書き込んだり、編集したり、変更したりすることはできません。これは例を使用した図です。

読み取り専用( -r )変数名をデカールします。その値は「Tecmint.com」です。

[email protected]:~$ declare -r name="Tecmint.com"

上記で宣言された変数の値をprintfします。

[email protected]:~$ printf "%s\n" "$name" 

Tecmint.com

変数の値を変更してみてください。

[email protected]:~$ declare -r name="Avishek" 

bash: declare: name: readonly variable

上で説明したように、読み取り専用変数の属性は、「 + 」記号を使用して変更できます。

Linuxでの変数のエクスポート

シェルスクリプトで宣言されたすべてのシェル変数は、スクリプトが実行されるまで使用できます。スクリプトの外部では、スクリプトの変数は存在しません。スクリプトの外部で変数を使用できるようにするプロセスは、変数のエクスポートと呼ばれます。

スイッチ declare -x (エクスポート)を使用して、変数をシェルの外部にエクスポートできます。これにより、エクスポートしたいものがシェルに確認されます。宣言エクスポートスイッチは、として使用できます。

[email protected]:~$ declare -x variable=”Constant_Value”

スクリプトの実行中に変数に加えられたすべての変更は、変数がスクリプトの外部にエクスポートされると失われます。変数のエクスポートは、シェルスクリプトで非常に重要です。

読み取り専用でスクリプトの外部で使用できる変数が必要なため、スイッチ -r とスイッチ -x を同時に使用する必要があります。

[email protected]:~$ declare -rx variable=”Constant_Value”

環境変数

プログラムとそれらを実行するプログラムの間で共有される変数。環境変数はエクスポートできますが、属性を割り当てることはできません。

上記の理論を実際に理解する。ここに、2つのスクリプト 0.sh 1.sh があります。

# 0.sh
#!/bin/bash 
declare -rx name=Tecmint 
bash 0.sh 
exit 0

そして2番目のスクリプトはです。

# 1.sh
#!/bin/bash 
printf "%s\n" "$name" 
name=Tecmint.com 
printf "%s\n" "$name"
exit 0

ここで起こっているのは、変数(名前)が読み取り専用として宣言されてエクスポートされ、その直後に2番目のスクリプトが呼び出されることです。

2番目のスクリプトは、最初の printf ステートメントでエクスポートされた最初のスクリプトの変数を出力しました。 2番目のprintfステートメントでは、変数 ‘ name ‘に割り当てられた新しい値が表示されます。

変数が読み取り専用であったことを心配する必要はありません。どのように再割り当てできますか。 「スクリプトの実行中に変数に加えられたすべての変更は、変数がスクリプトの外部にエクスポートされると失われる」ことを覚えておいてください。

declare コマンドを使用すると、以下のすべてのスイッチとそれらの組み合わせを使用できます。

  1. -a : Declares an array.
  2. -f : Display Function and Definition.
  3. -F : Display Function Name.
  4. -r : Declare variable as read-only.
  5. -x : Declare Variable as Exportable.
  6. -I : Declare variable as Integer.

それは今のところすべてです。次の記事では、このトピックを閉じる前に、「 eval 」コマンドを使用して変数を置換する方法と、bashですでに定義されている変数について説明します。人々がスクリプトの詳細への旅を楽しんでいることを願っています。それまでは、ご期待ください。Tecmint.comに接続してください。

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