よっしー
こんにちは。よっしーです(^^)
今日は、bashにおけるおすすめのsetオプションについてご紹介します。
背景
bashにおけるおすすめのsetオプションについて調査する機会があったので、そのときの内容を備忘として残しました。
この記事のソースは下記のサイトにアップしています。
実行環境について
実行環境は下記の記事を参考にお願いします。
作成ファイル一覧
下記のファイルを作成しました。
new file: local/work/04_set_option/04_set_option.sh
04_set_option.sh
#!/usr/bin/env bash
set -euCxo pipefail
which bash
bash --version
動作確認
下記のコマンドを実行します。
make build
make up
make login
cd 04_set_option
chmod +x 04_set_option.sh
./04_set_option.sh
下記の結果が出力されていれば成功です。
root@11afc3607d76:/work/04_set_option# ./04_set_option.sh
+ which bash
/usr/bin/bash
+ bash --version
GNU bash, version 5.2.15(1)-release (aarch64-unknown-linux-gnu)
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
解説
set -euCxo pipefail
このコマンドは、シェルスクリプト内で使用される set
コマンドのオプションを設定しています。各オプションの目的は以下の通りです。
-e
オプション:
- このオプションは、シェルスクリプトが実行中にコマンドの実行結果が0以外(=エラーが発生した場合)であれば、スクリプトの実行を中止するようにします。これにより、エラーが発生したときにそれを無視せずに停止させることができます。
-u
オプション:
- 未定義の変数を使用しようとすると、エラーが発生するようになります。これにより、変数が定義されていない状態での不測のバグを防ぐことができます。
-C
オプション:
- このオプションは、シェルスクリプトが一時ファイルを作成するときに、既に存在するファイルを上書きせずにエラーを発生させるようにします。
-x
オプション:
- このオプションは、各コマンドが実行される前にそのコマンドがどのように解釈されるかを表示するようにします。これにより、スクリプトがどのように実行されているかをトレースすることができます。
-o pipefail
オプション:
- このオプションは、パイプライン中のコマンドのいずれかがエラーで終了した場合に、パイプライン全体をエラーで終了させるようにします。通常、パイプラインの各コマンドは独立して実行され、前のコマンドがエラーでも次のコマンドが実行されるが、このオプションを使用することで、エラーがある場合にはパイプライン全体がエラーとなります。
これらのオプションは、シェルスクリプトをより堅牢にし、エラーを見逃さずに処理するためのものです。
おわりに
今日は、bashにおけるおすすめのsetオプションについてご紹介しました。
よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント