このbashスクリプトでコマンドの終了値を取得できないのはなぜですか?

このbashスクリプトでコマンドの終了値を取得できないのはなぜですか?

だから私はビデオをmp3にトランスコードするために、次のような小さなノーチラススクリプトを書いています。

#! /bin/bash -x

if [ -z "$1" ]
    then
    zenity --warning --text="Error - No file selected !"
    exit 1
fi

BASEFILENAME=${1%.*}

exec ffmpeg -i "$1" -ab 256k "$BASEFILENAME.mp3" &&

if [ "$?" -eq 0 ]
    then
    zenity --info --text="Converting successful"
    exit
fi

問題はffmpegコマンドが正常に実行されましたが、if [ "$?" -eq 0 ]

発動しないようです。なぜそんなことですか?&&間違いですか、それとも別のものですか?

ベストアンサー1

このドアに到達する唯一の方法は、ドアexec自体が失敗した場合です。成功すると、ffmpegコマンドはシェルを完全に置き換えます。 (現象的&&にはこの場合でも失敗するため、まったく到達できません。)execこれを実行したくないので、実行してください。

おすすめ記事