回答:
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