Table of Contents
POSIX準拠における終了ステータス
Def: POSIX
- POSIX (Portable Operating System Interface) は, UNIX 系 OS 間でアプリケーションの移植性/互換性を高めるために定義された IEEE の標準規格
- POSIXではコマンド成功の場合は 0, 失敗の場合は 1 ~ 255 のいずれかの値を返すと定めている
POSIX準拠とは, OSやアプリケーションがPOSIX標準の要件を満たしていることを意味します. Linuxコマンドのうち, POSIX準拠しているものは
- コマンド成功の場合は 0
- 失敗の場合は 1 ~ 255 のいずれか
というステータス値を返す挙動をします. どのようなexit statusが具体的に設定されているかは man
コマンドで確認する必要があります.
lsコマンドのexit status
man ls
でExit statusを調べると以下のように定義されています.
1
2
3
4
5
6
Exit status:
0 if OK,
1 if minor problems (e.g., cannot access subdirectory),
2 if serious trouble (e.g., cannot access command-line argument).
コマンド終了値を格納したシェル変数
シェル変数 | 利用可能なシェル |
---|---|
$? |
bash, zsh |
$status |
zsh, csh |
$?
や$status
は直前のコマンドのexitステータスを格納しています.
zshにおける実行例
zshにおける実行例は以下:
1
2
3
4
5
6
7
8
9
10
11
% false
% echo $?
1
% false
% echo $status
1
% true
% echo $?
0
bashにおける実行例
bashにおける実行例は以下:
1
2
3
4
5
6
7
8
9
10
11
$ false
$ echo $?
1
# シェル変数として定義されていないので何も返さない
$ false
$ echo $status
$ true
$ echo $?
0
exit statusを活用したコマンドのつなぎ方
コマンドを連続実行する際,
制御演算子 | 説明 |
---|---|
; |
exit status関係なく実行 |
&& |
直前のコマンドのexit statusが0なら実行 |
\|\| |
直前のコマンドのexit statusが0以外なら実行 |
を利用して, コマンドをつないだりします. これはリダイレクションやパイプとは別概念であることに注意してください。
1
2
3
4
5
6
7
8
9
10
11
12
13
% true && echo 'phase 1' || echo 'phase 2'
phase 1
% false && echo 'phase 1' || echo 'phase 2'
phase 2
% false ; false && echo 'phase 1' || echo 'phase 2' ; echo 'phase 3'
phase 2
phase 3
% false ; true && echo 'phase 1' || echo 'phase 2' ; echo 'phase 3'
phase 1
phase 3
なお注意点としては, &
単体ではバックグラウンド実行を意味するので入力ミスには気をつけてください.
統計
Python
math
Linux
Ubuntu 20.04 LTS
Shell
English
git
方法論
Ubuntu 22.04 LTS
統計検定
競技プログラミング
フーリエ解析
前処理
SQL
coding
コミュニケーション
Network
ssh
将棋
Data visualization
Docker
Econometrics
VSCode
statistical inference
GitHub Pages
apt
development
システム管理
Coffee
cloud
数値計算
素数
Book
Font
Metrics
Poetry
Ubuntu 24.04 LTS
architecture
aws
shell
systemctl
テンプレート
データ構造
ポワソン分布
会計分析
文字コード
環境構築
論文
App
Bayesian
Dynamic Programming
Keyboard
Processing
R
Steam
filesystem
quarto
regex
(注意:GitHub Accountが必要となります)