ターミナル上でのコマンド操作をする機会が増えると
「毎回この手順は面倒だ、自動化したい…」
と思うようになる。
この記事は「シェルスクリプトの文法を学びたい」
というよりは「適当でいいからサクッと自動化したい」
という目的で書いている。
何はともあれHello, World.
基礎中の基礎、Hello, Worldができれば
ある程度のコマンドは自動化できるようになる。
Hello, World出力コマンドの代わりに
実行したいコマンドを列挙すれば良い。
まずは「hello.sh」というファイルを作成する。
必須ではないが、シェルスクリプトのファイルだと分かるように
拡張子を.sh
にするのが一般的だ。
「hello.sh」の中身は以下の通りだ。
#!/bin/bash
# この行はコメント
echo "Hello, World."
exit 0
ここのポイントは4つある。
#!/bin/bash
は、bashを利用するためのおまじない- 一行コメントは
#
で始める - 実行したいコマンドをそのまま書く
exit 0
で、コマンドが正常終了したことを意味する
ちなみに、exit 1
とすると、異常終了であることを表す。
実行方法
実行方法は2通りあるが、
さっさと実行したいのであれば1の方法をおすすめする。
方法1:「bash ファイル名」で実行する
$ bash hello.sh
Hello, World.
方法2:「(パスを含めた)ファイル名」で実行する
これは対象のファイルを実行可能ファイルにしておく必要がある。
$ ls -l hello.sh
-rwxr-xr-x 1 username staff 40 5 31 20:14 hello.sh
$ ./hello.sh
Hello, World.
ちなみに、chmod +x ファイル名
で
実行可能ファイルにすることが可能。
引数
上記の状態で、決まり切ったコマンドは十分実行できるが、
実行時に引数を指定したいときがある。
以下の3つを覚えておけば良い。
$0
:実行コマンド自身(パスを含む)$1
:第一引数$2
:第二引数
#!/bin/bash
echo $0
echo $1
上記の「hello.sh」を実行してみると、
以下のような実行結果となる。
# 実行結果
$ bash hello.sh こんにちは
hello.sh
こんにちは
まとめ
- 行頭は
#!/bin/bash
で始める - (なくても実行できるが)
exit 0
で締めくくる - 実行したいコマンドを一行ずつ並べておけば、順次実行してくれる
if文やfor文、変数定義など他にも文法はいろいろ存在するが
ここで紹介したことが活用できれば、ある程度の作業自動化は十分可能である。