すべてのプログラミング 言語変数 重要な役割を果たします。Linuxシェルスクリプトでは、次の2種類の変数を使用しています。システム定義変数 &ユーザー定義変数 。
シェルスクリプトの変数は、参照の手段です。 数値 または文字値 。また、正式なプログラミング言語とは異なり、シェルスクリプトでは型を宣言する必要はありません。 変数について
この記事では、変数、そのタイプ、およびシェルスクリプトで変数を設定および使用する方法について説明します。
システム定義変数:
これらは、オペレーティングシステム(Linux)自体によって作成および保守される変数です。 通常、これらの変数は大文字で定義されます。 。コマンド「$set 」を使用すると、これらの変数を確認できます。 「。システムで定義された変数のいくつかを以下に示します:
上記の変数の値を出力するには、echoコマンドを使用します 以下に示すように:
#echo $ HOME
#echo $ USERNAME
ドル記号が前に付いた環境変数の名前を使用して、スクリプト内からこれらの環境変数を利用できます。これは、次のスクリプトで示されています。
$ cat myscript
#!/ bin / bash
#システムからのユーザー情報を表示します。
echo「ユーザーIDのユーザー情報:$USER」
echo UID:$ UID
echo HOME:$ HOME
環境変数に注意してください エコーコマンドでは、スクリプトの実行時に現在の値に置き換えられます。また、 $ USERを配置できたことにも注意してください。 最初の文字列の二重引用符で囲まれたシステム変数であり、シェルスクリプトはそれでも私たちが何を意味するのかを理解することができました。 欠点があります ただし、この方法を使用すること。この例で何が起こるかを見てください:
$echo「アイテムのコストは$15です」
アイテムのコストは5です
それは明らかに意図したものではありません。スクリプトで引用符で囲まれたドル記号が表示される場合は常に、変数を参照していると見なされます。この例では、スクリプトは変数 $ 1を表示しようとしました (定義されていません)、次に数字の5。実際のドル記号を表示するには、前に置く必要があります バックスラッシュ文字:
$echo「アイテムのコストは\$15です」
アイテムのコストは$15です
それが良いです。バックスラッシュにより、シェルスクリプトはドル記号を解釈できました。 変数ではなく、実際のドル記号として。
これらの変数はユーザーによって定義されます 。シェルスクリプトを使用すると、独自の変数を設定して使用できます。 スクリプト内。変数を設定すると、一時的にデータを保存できます スクリプト全体で使用して、シェルスクリプトを実際のコンピュータプログラムのようにします。
ユーザー変数 最大20文字の任意のテキスト文字列にすることができます 、数字 、またはアンダースコア文字 。ユーザー変数では大文字と小文字が区別されるため、変数Var1は変数var1とは異なります。この小さなルールは、初心者のスクリプトプログラマーを困らせることがよくあります。
値は等号を使用してユーザー変数に割り当てられます。 変数、等号、および値(初心者にとってのもう1つの問題点)の間にスペースを入れることはできません。ユーザー変数に値を割り当てる例を次に示します。
var1 =10
var2 =-57
var3 =tests
var4 =“さらにテスト中”
シェルスクリプトはデータ型を自動的に決定します 変数値に使用されます。シェルスクリプト内で定義された変数は、シェルスクリプトの存続期間を通じてその値を維持しますが、シェルスクリプトが完了すると削除されます。
システム変数と同様に、ユーザー変数はドル記号を使用して参照できます:
$ cat test3
#!/ bin / bash
#テスト変数
days =10
guest =” Katie”
echo“ $guestは$days日前にチェックインしました”
days =5
guest =” Jessica”
echo“ $guestは$days日前にチェックインしました”
$
スクリプトを実行すると、次の出力が生成されます。
$ chmod u + x test3
$ ./test3
Katieが10日前にチェックインしました
Jessicaは5日前にチェックインしました
$
変数が参照されるたび 、現在割り当てられている値を生成します。変数値を参照するときは、ドル記号を使用することを覚えておくことが重要です。 、ただし、変数を参照して値を割り当てる場合は、ドル記号を使用しません。これが私の言いたいことの例です:
$ cat test4
#!/ bin / bash
#変数値を別の変数に割り当てる
value1 =10
value2 =$ value1
echo結果の値は$value2
$
値を使用する場合 value1 代入ステートメントの変数でも、ドル記号を使用する必要があります。このコードは次の出力を生成します:
$ chmod u + x test4
$./test4
結果の値は10
$
ドル記号を忘れて、value2割り当て行を次のようにした場合:
value2 =value1
次の出力が得られます:
$./test4
結果の値はvalue1
$
ドル記号がない場合、シェルは解釈します 通常のテキスト文字列としての変数名 、これはおそらくあなたが望んでいたものではありません。
シェル変数でのバッククォート記号( `)の使用:
バッククォートで許可 シェルコマンドの出力を変数に割り当てます。これはそれほど多くはないように見えますが、スクリプトの主要な構成要素です。 プログラミング。 コマンドラインコマンド全体をバッククォート文字で囲む必要があります:
tests =`date`
シェルはバックティック内でコマンドを実行します そして、出力を変数テストに割り当てます。通常のシェルコマンドからの出力を使用して変数を作成する例を次に示します。
$ cat test5
#!/ bin / bash
#バックティック文字を使用
tests =`date`
echo"日時は次のとおりです。」$testing
$
変数testingは、dateコマンドからの出力を受け取り、それを表示するためにechoステートメントで使用されます。シェルスクリプトを実行すると、次の出力が生成されます。
$ chmod u + x test5
$ ./test5
日時は次のとおりです。MonJan3120:23:25 EDT 2011
注 :bashでは、代替の $(…)を使用することもできます バッククォート( `)の代わりに構文を使用します。これには、再入可能であるという利点があります。
例:$ echo”今日の日付と時刻は:” $(date)
今日の日付と時刻は:Sun Jul 27 16:26:56 IST 2014
また読む :Linuxでの9つの「diff」コマンド例