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

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

Bash 変数チュートリアル – 6 つの実用的な Bash グローバル変数とローカル変数の例この記事は、進行中の bash チュートリアル シリーズの一部です。他のプログラミング言語と同様に、Bash にも変数が用意されています。

Bash 変数は、プログラムの存続期間中に必要となる情報を一時的に格納します。

構文:

VARNAME=VALUE

注: 変数の割り当てでは、「=」記号の周りにスペースを入れないでください。 VAR=VALUE を使用すると、シェルは「=」を記号として認識し、コマンドを変数割り当てとして扱います。 VAR =VALUE を使用すると、シェルは VAR がコマンドの名前であると想定し、それを実行しようとします。

シェルは変数の型を気にしません。変数には、文字列、整数、または実数を格納できます。

Example.1 簡単な Bash 変数割り当ての使用法

次のスクリプトは、LIST という変数を作成し、値「/var/opt/bin」を割り当てます。変数にアクセスするには、変数名の前に $ を付けるだけで、その変数に格納されている値が得られます。

$ cat sample.sh
#!/bin/bash
LIST="/var/opt/bin/"
ls -l $LIST

上記のスクリプトを実行すると、以下に示すように /var/opt/bin が長い形式で一覧表示されます。

$ ./sample.sh
total 8
drwxrwsr-x 2 bin bin 4096 Jan 29 06:43 softwares
drwxr-sr-x 5 root bin 4096 Sep 2 2009 llist

Bash 変数のスコープ – ローカルおよびグローバル

Bash では、変数を宣言する必要はありません。ただし、これまで使用されていない変数にアクセスすると、警告やエラー メッセージは表示されません。代わりに、空白の値が表示されます。

<センター>

例 2. bash 変数の空白値

$ cat var1.sh
#!/bin/sh
echo "Variable value is: $VAR1"
VAR1="GEEKSTUFF"
echo "Variable value is: $VAR1"

$ ./var1.sh
Variable value is:
Variable value is: GEEKSTUFF

上記のように、最初は変数に空白の値があり、割り当てた後、値を取得できます。 export コマンドは、対話型シェルから変数をエクスポートするために使用されます。 export は、変数のスコープへの影響を示します。

例 3. エクスポートなしの Bash 変数

インタラクティブ シェルで変数に値を割り当て、シェル スクリプトで同じ値にアクセスしてみてください。

$ VAR2=LINUX

$ cat var2.sh
#!/bin/bash
echo "VAR2=$VAR2"
VAR2=UNIX
echo "VAR2=$VAR2"

次に、以下に示すように上記のスクリプトを実行します。

$ ./var2.sh
VAR2=
VAR2=UNIX

それでも、変数 VAR2 の値は空白になります。シェルは変数 VAR2 を現在のシェルでのみ LINUX に格納します。 var2.sh の実行中に、シェルが生成され、スクリプトが実行されます。そのため、変数 VAR2 は生成されたシェルに値を持ちません。以下に示すように、変数をエクスポートして、別のプログラム (シェル スクリプトを含む) に継承させる必要があります。

例 4. Bash 変数のエクスポート

$ export VAR2=LINUX

$ cat var2.sh
#!/bin/bash
echo "VAR2=$VAR2"
VAR2=UNIX
echo "VAR2=$VAR2"

上記のスクリプトを実行してください。

$ ./var2.sh
VAR2=LINUX
VAR2=UNIX
$
$echo $VAR2
LINUX

ここで、シェル スクリプト var2.sh の実行後、VAR2 の値が LINUX になっていることがわかります。現在のシェルでスクリプトを実行しない限り、変数はインタラクティブ シェルに戻されないためです。

Bash 変数の宣言

bash で宣言ステートメントを使用すると、変数に割り当てられる値を制限できます。変数のプロパティを制限します。宣言ステートメントのオプションは、変数の型を決定するために使用されます。

構文:

declare option variablename
  • 宣言はキーワードです
  • オプションは次のようになります:
    • -r 読み取り専用変数
    • -i 整数変数
    • -配列変数
    • 関数の -f
    • -x は、環境を介して後続のコマンドを宣言し、エクスポートします。

例 5.declare を使用した Bash 変数の宣言

$ cat declar.sh
#!/bin/bash
declare -i intvar
intvar=123 # Assigning integer value.
echo $intvar
intvar=12.3 #Trying to store string type value to an integer variable
echo $intvar

declare -r rovar=281
rovar=212 # Trying to change the readonly variable.

以下の実行から、無効なデータを変数に割り当てたときにエラー メッセージが表示されることがわかります。

$ ./declar.sh
123
t.sh: line 6: 12.3: syntax error: invalid arithmetic operator (error token is ".3")
123
t.sh: line 11: rovar: readonly variable

グローバル Bash 変数

グローバル変数は環境変数とも呼ばれ、すべてのシェルで使用できます。すべての環境変数を表示するには、printenv コマンドを使用します。

$ printenv
SHELL=/bin/bash
HISTSIZE=1000
SSH_TTY=/dev/pts/1
HOME=/root
LOGNAME=root
CVS_RSH=ssh

ローカル Bash 変数

ローカル変数は、コード ブロック内でのみ表示されます。 local は、ローカル変数を宣言するために使用されるキーワードです。関数では、ローカル変数はその関数ブロック内でのみ意味を持ちます。

例 6. グローバルおよびローカル Bash 変数

$ cat localvar.sh
#!/bin/bash
pprint()
{
 local lvar="Local content"
 echo -e "Local variable value with in the function"
 echo $lvar
 gvar="Global content changed"
 echo -e "Global variable value with in the function"
 echo $gvar
}

gvar="Global content"
echo -e "Global variable value before calling function"
echo $gvar
echo -e "Local variable value before calling function"
echo $lvar
pprint
echo -e "Global variable value after calling function"
echo $gvar
echo -e "Local variable value after calling function"
echo $lvar

上記のスクリプトを実行し、

$ sh t.sh
Global variable value before calling function
Global content
Local variable value before calling function

Local variable value with in the function
Local content
Global variable value with in the function
Global content changed
Global variable value after calling function
Global content changed
Local variable value after calling function

上記の出力では、ローカル変数は、関数の呼び出しの前後で空の値のみを持ちます。そのスコープは関数内のみです。グローバル変数は関数の実行後も更新された値を持っていますが、関数から消えてしまいました。


  1. 6 つの実用的な例を含む Bash シェル関数のチュートリアル

    Bash シェル関数は、グループに単一の名前を使用して、後で実行するために複数の UNIX / Linux コマンドをグループ化する方法です。 . Bash シェル関数は、通常の Unix コマンドと同じように実行できます。シェル関数は、それらを解釈するための新しいプロセスを作成することなく、現在のシェル コンテキストで実行されます。bash エイリアスと関数の両方を使用すると、より長い、またはより複雑なコマンドのショートカットを定義できます。ただし、エイリアスは、このチュートリアルで説明されているように、これらの関数が許可する制御フロー、引数、およびその他の巧妙なものを許可しません。 この

  2. 5 つの実用的な例を含む Bash スクリプト入門チュートリアル

    進行中の Unix Sed および Unix Awk シリーズと同様に、Bash スクリプトに関するいくつかの記事を投稿します。実用的な例ですべての bash スクリプト テクニックをカバーします。 シェルは、ユーザー コマンドを解釈するプログラムです。コマンドは、ユーザーが直接入力するか、シェル スクリプトと呼ばれるファイルから読み取るかのいずれかです。ユーザーからの入力を直接読み取る場合、シェルは対話型シェルとして呼び出されます。 シェルは、ファイルからコマンドを読み取って実行するときに、非対話型シェルとして呼び出されます。この場合、シェルはスクリプト ファイルの各行を上から下に読み取