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
を読んでみよう!