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

Bashで変数を使用する

コンピュータサイエンス(およびカジュアルコンピューティング)では、変数は、後で使用するために任意の情報を保持するメモリ内の場所です。つまり、データを出し入れするための一時的なストレージコンテナです。 Bashシェルでは、そのデータは単語(文字列)にすることができます 、コンピュータ用語で)または数値(整数

これまで(故意に)コンピューターで変数を使用したことはないかもしれませんが、おそらく人生の他の領域で変数を使用したことがあります。 「givemethat」や「lookatthis」などと言うときは、文法変数を使用しています(代名詞 )、「これ」と「それ」の意味は、あなたが頭の中で描いているもの、またはあなたが指しているものに依存するため、視聴者はあなたが何を指しているのかを知ることができます。数学を行うときは、おそらく変数とは呼ばないかもしれませんが、未知の値を表すために変数を使用します。

これは、毎日使用していることに気付かない可能性のあるBash変数のすばやく簡単なデモンストレーションです。 PS1 変数は、ターミナルプロンプトをどのように表示するかについての情報を保持します。たとえば、パーセント記号()などの非常に単純なものに設定できます。 )— PS1を再定義する 変数:

$ PS1="% "
%

この記事では、Linux、BSD、Mac、またはCygwinで実行されているBashシェルの変数について説明します。 MicrosoftのオープンソースPowerShellのユーザーは、PowerShellの変数に関する私の記事を参照してください。

変数とは何ですか?

Bashで変数が必要かどうかは、ターミナルで何をするかによって異なります。一部のユーザーにとって、変数はデータを管理するための不可欠な手段ですが、他のユーザーにとってはマイナーで一時的な利便性であり、さらに他のユーザーにとっては存在しない可能性があります。

最終的に、変数はツールです。それらの用途を見つけたときにそれらを使用することも、OSによって管理されていることを知って安心してそのままにしておくこともできます。ただし、知識は力であり、Bashで変数がどのように機能するかを理解することで、あらゆる種類の予期しない創造的な問題解決につながる可能性があります。

変数の設定方法

変数を作成するために特別な権限は必要ありません。それらは自由に作成でき、自由に使用でき、通常は無害です。 Bashシェル(LinuxおよびMacの場合)では、変数名を定義してからその値を設定することで、それらを設定できます。次の例では、 FOOという新しい変数を作成します 値を文字列/home / seth / Documentsに設定します :

$ declare FOO="/home/seth/Documents"

成功は不気味に沈黙しているので、変数が設定されたことに自信がないかもしれません。 echoコマンドを使用して結果を確認できます 、ドル記号( $ )を前に付けて変数を呼び出します )。変数が定義したとおりに正確に読み取られるように、中かっこと引用符で囲むこともできます。これを行うと、変数に表示される可能性のある特殊文字が保持されます。この例では、それは当てはまりませんが、それでも形成するのは良い習慣です:

$ echo "${FOO}"
/home/seth/Documents

変数の設定は、シェルを頻繁に使用する人々にとって一般的なことである可能性があるため、プロセスはやや非公式になっています。文字列の後に等号が続く場合( = )と値を指定すると、Bashは変数を設定していると静かに想定し、宣言を作成します。 キーワード不要:

$ FOO="/home/seth/Documents"

変数は通常、あるシステムから別のシステムに情報を伝達することを目的としています。この簡単な例では、変数はあまり役に立ちませんが、それでも情報を伝達できます。たとえば、 FOOのコンテンツが 変数はファイルパスであり、〜/ Documentsへのショートカットとして変数を使用できます。 ディレクトリ:

$ pwd
/home/seth
$ cd "${FOO}"
$ pwd
/home/seth/Documents

変数は、予約されていない任意の文字列(整数およびアンダースコアを含む)にすることができます。大文字にする必要はありませんが、変数として簡単に識別できるようにすることがよくあります。

変数をクリアする方法

未設定で変数をクリアできます コマンド:

$ unset FOO
$ echo $FOO

実際には、このアクションは通常必要ありません。変数は比較的「安価」であるため、変数を作成して、不要になったときに忘れることができます。ただし、変数を読み取る可能性のある別のプロセスに誤った情報を伝達しないように、変数が空であることを確認したい場合があります。

衝突保護機能を備えた新しい変数を作成します

場合によっては、変数が自分またはプロセスによってすでに設定されていると信じる理由があるかもしれません。オーバーライドしたくない場合は、既存の値が空でない限り、変数を既存の値に設定するための特別な構文があります。

この例では、 FOO / home / seth / Documentsに設定されています :

$ FOO=${FOO:-"bar"}
$ echo $FOO
/home/seth/Documents

コロンダッシュ:- 表記により宣言が発生します デフォルトで既存の値になります。このプロセスが逆に機能することを確認するには、変数をクリアして、再試行してください:

$ unset FOO
$ echo $FOO

$ FOO=${FOO:-"bar"}
$ echo $FOO
bar
> 変数を子プロセスに渡します

変数を作成すると、ローカル変数と呼ばれるものが作成されます。 。これは、変数が現在のシェルに認識されており、現在のシェルのみに認識されていることを意味します。

この設定は、変数のスコープの意図的な制限です。 。変数は、設計上、知る必要があるベースで情報共有を維持しようとして、デフォルトでローカルでのみ使用可能になる傾向があります。たとえば、重要なパスワードをクリアテキストで含む変数を愚かに作成する場合、システムがリモートシェルまたは不正なデーモン(または変数を作成した1つのセッション以外のもの)がそのパスワードにアクセスすることを許可しないことを知っておくと便利です。 。

この記事の冒頭の例を使用してプロンプトを変更しますが、現在のシェル内で新しいシェルを起動します。

$ PS1="% "
% bash
$

新しいシェルを起動すると、 PS1の新しい値が表示されます は、新しいプロンプトではなくデフォルトのプロンプトです。子プロセスは、親に設定された変数を継承しません。子プロセスを強制終了すると、親シェルに戻り、カスタムの PS1が表示されます。 もう一度プロンプトを表示:

$ exit
%

変数を子プロセスに渡したい場合は、追加できます。 変数定義を含むコマンド、またはエクスポート 子プロセスへの変数。

変数の追加

コマンドを実行する前に、任意の数の変数を付加できます。 変数が子プロセスによって使用されるかどうかはプロセス次第ですが、どのような場合でも変数を子プロセスに渡すことができます。

$ FOO=123 bash
$ echo $FOO
123
$

LD_LIBRARY_PATH を使用して)特定のライブラリに特別な場所を必要とするアプリケーションを実行している場合、プリペンディングは便利なトリックになる可能性があります 変数)、または非標準コンパイラを使用してソフトウェアをコンパイルする場合( CC を使用) 変数)など。

変数のエクスポート

変数を子プロセスで使用できるようにする別の方法は、エクスポートです。 キーワード、Bashに組み込まれているコマンド。 エクスポート コマンドは、指定した1つまたは複数の変数の範囲を広げます。

$ PS1="% "
$ FOO=123
$ export PS1
$ export FOO
% bash
% echo $PS1
%
% echo $FOO
123

どちらの場合も、ローカル変数に渡されたりエクスポートされたりするローカル変数にアクセスできるのは子シェルだけではなく、そのシェルの子プロセスです。同じシェルからアプリケーションを起動でき、その変数はアプリケーション内から環境変数として使用できます。

システム上のすべてのものを使用するためにエクスポートされた変数は、環境変数と呼ばれます。 、これは将来の記事のトピックです。それまでの間、日常のタスクにいくつかの変数を使用して、ワークフローに何がもたらされるかを確認してください。


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

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

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

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