本記事の目的
作業自動化用のスクリプトを作成する際によく使う、Bash独自の記法についてまとめる。
シェルスクリプト文法
パラメータ
| 項目 |
機能 |
| $? |
直前のコマンドの終了ステータスを参照する。0であればTrue、0以外であればFalseの値を意味する。 |
| $# |
シェルスクリプトやシェル関数の引数の個数を参照する。 |
| $0 |
起動されたシェルスクリプト名を参照する。 |
| "$@" |
全ての位置パラメータをそれぞれダブルクォートで囲んだ状態で展開する。 |
| shift |
位置パラメータをシフトする。 |
リダイレクト
| 項目 |
機能 |
| >&2 |
標準エラー出力にリダイレクトする。 |
| &>/dev/null |
標準出力と標準エラー出力を両方破棄する。 |
評価
| 項目 |
機能 |
| [[ ]] |
条件式を評価し、その結果によって終了ステータスを返す。test[ ]コマンドと比較して、正規表現や拡張正規表現を使用できる点がメリットである。逆に、shを用いるOS上では使用できないため、互換性に劣る点がデメリットとなる。 |
| (( )) |
算術演算を行い、その結果によって終了ステータスを返す。 |
シェルスクリプト用コマンド
組み込みコマンド
| 項目 |
機能 |
| exit |
シェルスクリプトを終了する。コマンドの後に0を指定すると正常終了、0以外を指定するとエラー終了を意味する。 |
| read -p |
プロンプトを表示する。 |
| usage() { } |
コマンドの扱い方を出力する関数。シェルスクリプトでは最初に記載されている事が多い。 |
| getopt |
位置パラメータにセットされている、-で始まる1文字オプションを解釈し、最初に見つかったオプション文字の1文字を指定したシェル変数に代入する。この時、シェル変数OPTINDには、次にgetoptsが実行されたときに解釈するべき位置パラメータの番号が代入される。オプション文字の直後に:がある場合は、そのオプションが引数を必要とするものと解釈され、その引数はシェル変数OPTARGに代入される。 |
外部コマンド
| 項目 |
機能 |
| awk '{print $1}' |
1列目のフィールドを抽出して表示する。 |
| awk -F |
区切り文字を指定する。 |
| NF |
awkコマンドにおける列数を指定する。 |
感想
BashはUnix系のPC/サーバであれば、自宅/会社/客先問わず様々な環境で共通して使えるため、非常に便利に感じる。今はBashを用いて作業を自動化する事が多いが、Pythonではさらに複雑な処理を自動化できるようになるため、時間ができたらPythonを学習してみたい。
参考文献