Help us understand the problem. What is going on with this article?

bashのスクリプトを書くときはshebangで-xeを指定するよりset -xeした方がよさそう

More than 1 year has passed since last update.

例えばこういうスクリプトを書いたとします。

tmp.sh
#!/bin/bash -xe

ls | grep 'ababababababa'

echo 'abcd'

grepは存在しなければexit codeとして1を返します。なので下のechoは実行されないはずです。

しかし以下のように実行するとechoが実行されてしまいます。

bash tmp.sh

bashをつけて実行するとshebangの指定は無視されるみたいです。以下のようにsetで指定する方がよさそうです。

#!/bin/bash

set -xe

ls | grep 'ababababababa'

echo 'abcd'

今までどっちも同じやろ位にしか思っていなかったのですが、set派に改宗することにします。

catatsuy
mercari
フリマアプリ「メルカリ」を、グローバルで開発しています。
https://tech.mercari.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away