Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2722

exitコマンドの終了コードを0にしたいときは、明示的に0を指定する

$
0
0

exitコマンドの終了コード - @jkr_2255」という記事が面白かったので、自分の環境で実際に挙動を確認してみました。

環境

$ bash --version
GNU bash, version 4.4.20(1)-release (x86_64-pc-linux-gnu)

出力結果

まず、exitコマンドは引数として指定した数字を終了コードとして返します。

$ bash -c 'exit 0'; echo $?
0
$ bash -c 'exit 1'; echo $?
1
$ bash -c 'exit 255'; echo $?
255

引数を指定せず、exitした場合は、終了コードが0となります。

$ bash -c 'exit'; echo $?
0

言及元の記事の通り、引数指定なしの exitコマンドの終了コードは、前回のコマンドの終了コードとなりました。

$ bash -c 'bash -c "exit 10"; exit'; echo $?
10

途中で psコマンドを発行してプロセスを確認してみます。exit 10を発行するプロセスが、exitを発行するプロセスの子プロセスになっていることがわかります。

$ bash -c 'bash -c "ps f;exit 10"; exit'; echo $?
10
22911 pts/0    Ss     0:00 bash
28813 pts/0    S+     0:00  \_ bash -c bash -c "ps f;exit 10"; exit
28814 pts/0    S+     0:00      \_ bash -c ps f;exit 10
28815 pts/0    R+     0:00          \_ ps f

余談

255以上の数値を指定すると、0を返すようです。

$ bash -c 'exit 256'; echo $?
0

コマンドのタイポをした場合は、127が返ります。

$ bash -c 'eecho;'; echo $?
bash: eecho: command not found
127

おわりに

特殊なケースでない限り、exit 0と終了コードを明示的に指定しようと思います。トラブルが少なくて済みそうです。


Viewing all articles
Browse latest Browse all 2722

Trending Articles