【Linux入門】bashの使い方をわかりやすく解説! | 侍エンジニアブログ
bash シェルスクリプト
bash(バッシュ)とは「Bourne Again Shell(ボーン・アゲイン・シェル)」の略で、Linuxでコマンドなどの命令文を記述したシェルを実行するために使われます。
bashはLinuxで標準で採用されていて、基本的に「.sh」の拡張子でviエディタなどのテキストに処理を記述して実行します。プログラミング同様に変数や関数、演算処理など多くの機能がありちょっとしたプログラムならbashのみでも記述することができます。
また、bashはシェルによって実行されるのでシェルスクリプトとも呼びます。
そのままbashのコマンド入力が可能ですが基本的に「.sh」の拡張子でテキストに処理を記述して実行します。
シェルスクリプト
シェルスクリプトとはシェルで実行するコマンドなどがまとまったドキュメントのようなものだ。
このドキュメントを用意しておくと、上から順番にコマンドが実行されていくので、いちいちコマンドを打たなくて済む。例えば、定期的な保守作業など、シェルスクリプトを用意しておけば、コマンドを打たずにすぐに実行できる。
shebang とは
シェバンと読み、Linux等で実行されるシェルスクリプトにおいて先頭についている #! を指します。
このシェバン #! で、コンピュータ内でパスを指定すると実行時にそのプログラムが起動されてそれ移行のスクリプトが引き渡されて実行されます。
#(ハッシュ:hash/シャープ:sharp) と !(バン:bang) を縮めて、shebangを言われるようになりました。
シェルスクリプトの作成
拡張子について
拡張子「.sh」とあるが、厳密にはLinuxは拡張子を必要としないので「.sh」は必ず書かなくてはならないというわけではない。
しかしエディタなどは「.sh」でそれがsh系のスクリプトであると判断するのでとりあえず、最後には「.sh」をつけておこう。
exitコマンドの終了コード
exit 0のように終了コードを指定すれば、それをシェルスクリプト全体の終了コードとする、という結果になります。
書かない場合もありますが私的にはシェルスクリプトを複数使用する場合前のシェルの変数が影響するので注意が必要があるので exit 0 で終了する。
では実際にbashが記述されたシェルスクリプトを作成してみましょう。まずはコンソールに「Hello World!!」を出力する簡単なスクリプトを作成してみます。
viコマンドで新規にファイルを作成します。
$ vi hello.sh
エディタを開いたら以下のように記述します。
#!/usr/bin/bash
echo "Hello World!!"
exit 0
1行目の「#!/usr/bin/bash」はbashを使用したシェルスクリプトであることを意味しています。2行目では実行する命令文を記述します。最後に「exit 0」でbashを終了します。引数の0は正常に終了することを意味します。
ファイルを作成したら「bash」コマンドでシェルスクリプトを実行します。
$ bash hello.sh
実行結果:
Hello World!!
Hello World!!が出力されました!
また、シェルスクリプト実行時のコマンドは「bash」のほかに、実行権を変更して「./」で実行する方法(パスの通っていないところでのファイル、コマンドの実行はきっちりとフルパスで指定)と、
$ chmod 755 hello.sh #実行権限をあたえる
$ ./hello.sh
通常この方法でおこなう
「sh」コマンドで実行する方法があります。
$ sh hello.sh
bashの基本を理解しよう!
コメント
シェルスクリプトにはプログラミング同様コメントを記述することができます。コメントは「#」以降に書くことができます。
#!/usr/bin/bash
#ここはコメントです。
echo "Hello World!!"
#処理を終了します。
exit 0
変数の定義
シェルスクリプトは変数を定義して値を代入することができます。
#!/usr/bin/bash
num=100
PI=3.14
STR1="Hello"
str_2="World!!"
echo ${num}
echo ${PI}
echo ${STR1}
echo ${str_2}
exit 0
変数は大文字小文字や数字などの半角英数字やアンダーバー(_)が使えます。変数に値を代入するときは「変数=値」のように記述します。「=」の前後に空白を入れるとエラーになるので注意しましょう。
また、変数にアクセスするときは「${変数}」のように変数名の前に「$」を付けて、変数を「{}」で囲む必要があります。
入力と出力
シェルスクリプトは「echo」で出力を行い、「read」で入力を行います。
#!/usr/bin/bash
read AGE
echo "ege=$AGE"
exit 0
実行結果:
30
ege=30
readは引数に指定した変数にコンソールから入力された内容を格納します。readで指定した変数は通常の変数のように参照することができます。