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

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

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

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

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

変数属性

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

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

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

admin@wsxdn.com:~$ declare -i bill=121

可変請求書の値を印刷します。

admin@wsxdn.com:~$ printf "%d\n" "$bill" 

121

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

admin@wsxdn.com:~$ bill=tecmint

ここで、可変請求書の値を再度printfします。

admin@wsxdn.com:~$ printf "%d\n" "$bill" 

0

0」に注意してください ‘エラーメッセージの代わりに。

ここで、問題は、すでに宣言されている変数の属性をどのように知るかです。
admin@wsxdn.com:~$ declare -p bill 

declare -i bill="121"

ここで、 -p (印刷の略)スイッチが助けになります。

繰り返しますが、変数の属性をオフにするにはどうすればよいですか?

オフに切り替えるには 変数の属性に必要なのは、 +を配置することです。 (プラス )スイッチの直前に署名します。ここでは、以下の例からより明確になっています。

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

admin@wsxdn.com:~$ declare +i bill

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

admin@wsxdn.com:~$ printf "%d\n" "$bill" 

bash: printf: bill: invalid number
0

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

admin@wsxdn.com:~$ printf "%s\n" "$bill" 

tecmint

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

読み取り専用変数

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

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

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

admin@wsxdn.com:~$ declare -r name="Tecmint.com"

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

admin@wsxdn.com:~$ printf "%s\n" "$name" 

Tecmint.com

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

admin@wsxdn.com:~$ declare -r name="Avishek" 

bash: declare: name: readonly variable

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

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

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

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

admin@wsxdn.com:~$ declare -x variable=”Constant_Value”

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

読み取り専用でスクリプトの外部で使用できる変数が必要な場合は、switch -rを使用する必要があります。 -xを切り替えます 同時に。

admin@wsxdn.com:~$ 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に割り当てられた新しい値が表示されます。 ‘。

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

参考資料

宣言 コマンドは、以下のすべてのスイッチとそれらの組み合わせを許可します。

  1. -a :配列を宣言します。
  2. -f :表示機能と定義。
  3. -F :関数名を表示します。
  4. -r :変数を読み取り専用として宣言します。
  5. -x :変数をエクスポート可能として宣言します。
  6. -私 :変数を整数として宣言します。

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


  1. Linuxでのシェル初期化ファイルとユーザープロファイルについて

    Linuxはマルチユーザーのタイムシェアリングシステムであり、複数のユーザーがログインしてシステムを使用できることを意味します。また、システム管理者は、ソフトウェアのインストール/更新/削除、実行できるプログラム、表示/編集できるファイルなど、さまざまなユーザーがシステムを操作する方法のさまざまな側面を管理するタスクを持っています。 Linuxでは、システム全体(グローバル)とユーザー固有(個人)の構成を使用するという2つの主要な方法でユーザーの環境を作成または維持することもできます。通常、Linuxシステムを操作する基本的な方法はシェルであり、シェルは、ユーザーログインが成功した後の初期化

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

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