時間は変化し、変数も変化します!
何らかのプログラミングを行った場合は、変数をかなり操作したに違いありません。
これまで変数を操作したことがない場合は、時間の経過とともに変化する可能性のある情報を格納するコンテナーと考えることができます。
変数は、bashスクリプトを作成するときに常に役立ちます。このチュートリアルでは、bashスクリプトで変数を使用する方法を学習します。
bashシェルスクリプトでの変数の使用
このシリーズの最後のチュートリアルでは、bashでHelloWorldプログラムを作成する方法を学びました。
#! /bin/bash
echo 'Hello, World!'
これは単純なHelloWorldスクリプトでした。より良いHelloWorldにしましょう。
シェル変数を使用してこのスクリプトを改善し、ユーザーに名前で挨拶するようにします。 hello.shスクリプトを編集し、readコマンドを使用してユーザーから入力を取得します。
#! /bin/bash
echo "What's your name, stranger?"
read name
echo "Hello, $name"
ここで、hello.shスクリプトを実行すると、名前の入力を求められた後、指定した名前で挨拶します:
[email protected]:~/scripts$ ./hello.sh
What's your name, stranger?
Elliot
Hello, Elliot
上記の例では、名前としてエリオットを入力すると、スクリプトが「こんにちは、エリオット」と挨拶しました。これは、一般的な「Hello、World」プログラムよりも間違いなくはるかに優れています。同意しませんか?
それでは、ここでスクリプトを1行ずつ見ていき、すべてを理解していることを確認しましょう。
最初に、このスクリプトを実行するためにbashシェルを使用することを明示的に示すためにshebang行を含めました。
#!/bin/bash
次に、ユーザーに名前を入力してもらいます:
echo "What's your name, stranger?"
これは、端末に行を出力するための単純なエコーコマンドです。かなり自明です。
これがすべての魔法が起こる線です:
read name
ここでは、readコマンドを使用して、実行中のスクリプトからユーザーに制御を移し、ユーザーが名前を入力して、入力したユーザーを「name」変数に格納できるようにしました。
最後に、スクリプトはユーザーに名前で挨拶します:
echo “Hello, $name”
ここで、変数名に格納されている値を取得するには、変数名の前にドル記号を付ける必要があることに注意してください。ドル記号を省略すると、代わりに「こんにちは、名前」が表示されます。
このドル記号は、bashスクリプトでは間接参照演算子として知られています。
整数、文字列、または文字? bashシェルでさまざまな変数データ型を作成するにはどうすればよいですか?
変数をもう少しいじってみましょう。
等号を使用して、変数の値を作成および設定できます。たとえば、次の行はageという名前の変数を作成し、その値を27に設定します。
age=27
年齢変数を作成したら、その値を好きなだけ変更できます。
age=3
上記のコマンドは、変数ageの値を27から3に変更します。時間が戻ることができれば、あなたの言うことを聞くことができます!
変数はさまざまなタイプのデータを保持できます。変数には、整数、文字列、および文字を格納できます。
letter=’c’
color=’blue’
year=2020
bashシェルの定数変数
定数変数、つまり値が変更されない変数を作成することもできます。これは、変数名の前にreadonly
を付けることで実行できます。 コマンド:
readonly PI=3.14159
上記のコマンドは、定数変数PIを作成し、その値を3.14159に設定します。現在、定数変数の値を変更することはできません。変更しようとすると、エラーが発生します:
bash: PI: readonly variable
ご覧のとおり、定数変数の値のみを読み取ることができますが、作成後にその値を変更することはできません。
コマンドの出力を変数に格納する機能はコマンド置換と呼ばれ、bashの最も驚くべき機能の1つです。
dateコマンドは、コマンド置換を示す典型的な例です。
TODAY=$(date)
上記のコマンドは、コマンド日付の出力を変数TODAYに格納します。日付コマンドを括弧とドル記号(左側)で囲む必要があることに注意してください。
または、コマンドを一組の後ろ引用符で囲むこともできます。
TODAY=`date`
バッククォート方式はコマンド置換を行う古い方法であるため、これを避けて最新のアプローチを使用することを強くお勧めします。
variable=$(command)
移動する前に、HelloWorldスクリプトをスマートHelloWorldスクリプトに変換してみてください
コマンド置換の方法を学習したばかりなので、HelloWorldスクリプトにもう一度アクセスして完成させるのが理にかなっています。
前回、スクリプトがユーザーに挨拶するように、ユーザーに名前を入力するように依頼しました。今回は、質問するつもりはありません。スクリプトはすでにそれを知っています!
コマンド置換とともにwhoamiコマンドを使用して、スクリプトを実行する人に挨拶します。
#! /bin/bash
echo "Hello, $(whoami)"
ご覧のとおり、必要なのは2行だけです。次に、スクリプトを実行します:
./hello.sh
それは魅力のように機能します!
これで、このチュートリアルは終了です。問題を解決することで学んだことを実践し、行き詰まったりヒントが必要な場合は解決策を参照することができます。
Bash第2章練習問題この章で学んだことを練習するための問題とその解決策Bash-Chapter-2-Practice-Questions-Linux-Handbook.pdf29KB
私と同じようにシェル変数の操作を楽しんでいただけたと思います。このシリーズの次の章をチェックしてください。ここでは、シェルスクリプトに引数を渡す方法について説明しています。