リターンコードを取得

BASHでリターンコードを取得

$?で直前のコマンドのリターンコードを取得できる

mkdir hoge
echo "$?"
  • リターンコード
    成功 -> 0
    失敗 -> 1
リターンコードの受け取り方

実行に失敗した場合に呼び出し元に返り値をそのまま返したい時

#!/bin/bash

function hoge(){
    mkdir hoge
    # ディレクトリ作成に失敗したら返り値を返して抜ける
    if [ $? -ne 0 ];then
        exit "$?"
    fi
    # 処理の続き...
}

echo "`hoge`"

とやると上手くいかない

$?は直前のコマンド実行結果を拾ってくるらしい
この場合、exit "$?"で返されるのはif文の条件整合結果

#!/bin/bash

function hoge(){
    mkdir hoge
    # ディレクトリ作成に失敗したら返り値を返して抜ける
    result=$?
    if [ ${result} -ne 0 ];then
        exit "${result}"
    fi
    # 処理の続き...
}

echo "`hoge`"

こんな感じで受け取ってやればOK