回答:
set -eコマンドが失敗するとすぐにシェルを終了します。つまり、unmountコマンドが終了するとすぐに。ifそれもに到達する前にスクリプトが終了するので、それをキャッチすることはできませんif。これを修正するには、unmountコマンドを if条件に入れます(成功した場合ではなく、アンマウントが失敗した場合に句を!実行するように否定しthenます)。
if ! unmount $MOUNTPATH; then
/bin/echo "Failed to unmount! Already unmounted?"
fi
問題は、ifステートメントの後にセミコロンがあることです。
umount $MOUNTPATH
if [[ $? -ne 0 ]]
then
/bin/echo "Failed to unmount! Already unmounted?"
fi
それで修正されるはずです。
出典:http : //bash.cyberciti.biz/guide/If_structures_to_execute_code_based_on_a_condition