Lから始まるLinux

3章23話
ドットコマンド
3章24話 setコマンド
もくじ
3章25話
一時ファイル作成
set コマンド
若木 みどり
お兄ちゃん! シェルスクリプト途中の コマンドが失敗したら 後続のコマンドも同様に 失敗しちゃったんだ まるで失敗のドミノ倒しだよ! こういうのって なんとかならないかな?
若木 しげる
もちろん対処できるよ! 今回はシェルオプションを学ぼう!
-e オプション
若木 しげる
set シェルにオプション変更を伝えるよ
set -オプション
set +オプション
若木 みどり(驚き)
へぇ…シェルにもオプションがあったんだ!しかも動作している途中でオプションを切り替えられるんだね!
若木 しげる
bash-e オプションはコマンドが失敗したらスクリプト実行をそこで停止するよ
若木 しげる
ただし成否を評価に使っている部分の失敗は例外だよAND 演算子 && や OR 演算子 ||if文やwhile文のような場合だね
若木 みどり
まさに私が欲しかった機能だよ!どうやって指定するのかな?
若木 しげる
set-e オプションを指定してあげればいいよシェルスクリプトでは冒頭に書くことが多いね
set -e
若木 みどり
失敗する可能性のあるコマンドを一時的に許容してあげたい場合はどうすればいいのかな?
若木 しげる
オプションの-+ にするとそのオプションを解除する意味になるんだそのようなコマンドの直前でset +e とするといいよ
若木 しげる
これらを組み合わせてこのように書くよ
#!/bin/bash

# 通常は失敗したら停止
set -e

...

# ここだけ失敗を許したい
set +e
失敗の可能性があるコマンド
set -e

...
若木 みどり
- で指定+ で解除…ちょっと混乱しそう
若木 しげる
通常のコマンドと同じようにまずは -「オプション指定」と覚え次に +- の反対と覚えると混乱しないと思うよ
-v, -x オプション
若木 しげる
せっかく set の話をしたので他の便利なオプションも紹介しよう!
若木 みどり(驚き)
えっ!興味ある!
若木 しげる
内容が複雑になったとき処理を頭の中だけで追うのは大変だよね以下のオプションを指定するとシェルスクリプト実行時にその実行内容が表示されるんだ
オプション役割
-v実行内容を表示
-x実行内容の途中経過を表示
若木 しげる
詳しく見たい所の始まりに set -vx終わりに set +vx指定してあげると内容を理解しやすくなるよ
#!/bin/bash

...

set -vx
詳しく見たい処理
set +vx

...
まとめ
若木 みどり
今回は setシェルのオプションを変更できることを学んだよbash のオプションのうち-e, -v, -x オプションを覚えたよ!
若木 しげる
他にも様々なオプションがあるので興味があればman bash読んでみよう!