次のコードパッチが見つかりました。
function some_fun() {
#[...]
[ -d ${MKAPP_BUILDDIR}/tmp ] || mkdir ${MKAPP_BUILDDIR}/tmp || return 1
if [ $? -ne 0 ]; then # never true?
mount -t tmpfs none ${MKAPP_BUILDDIR}/tmp || return 1
fi
}
私が理解したところによれば、tmp
ビルドディレクトリにディレクトリがあることを確認し、そうでない場合はディレクトリを作成しようとします。もし失敗すると、関数はステータスコード1で終了します。
もしそうなら、以下のifステートメントで失敗した終了コードをチェックするのは無意味ですか?それ以前は、失敗したコマンドはありません。関数が返され、if文が処理されなくなるためです。
私が正しく考えているのか、それとも構文が私をだましているのでしょうか?
ところで、私はbashを使用しています。
答え1
はい、そうです。プロシージャreturn
は、終了状態 1 でスクリプトの元の呼び出し元に関数を終了します。
したがって、mount
コマンドは処理されません。
この問題を解決するには、if .. then
mount コマンドから次の文を削除します。
[ -d ${MKAPP_BUILDDIR}/tmp ] || mkdir ${MKAPP_BUILDDIR}/tmp || return 1
mount -t tmpfs none ${MKAPP_BUILDDIR}/tmp || return 1
したがって、ディレクトリを作成できない場合は状態1で終了します。
正常に作成されたら、mount
コマンドを実行します。