バッシュスクリプト - デバイスをumount、それがマウントされていない場合は失敗しませんか?
質問
任意のコマンドが正常に完了しない場合、すなわち、任意のコマンドは、0終了コードを返さない場合、スクリプトは死んでしまうそうという、私はbashスクリプトを書いていると私はerrexit
セットを持っています。これは確かに私のbashスクリプトが堅牢であることを確認することです。
私は、いくつかのファイルシステムをマウントする必要があり、オーバーアンマウントそれをいくつかのファイルをコピーします。それが何かを行う前に、それをumountますように、私は開始時にumount /mnt/temp
を入れています。それはその後、マウントされていない場合しかし、アンマウントは失敗して私のスクリプトを停止します。
それはumount --dont-fail-if-not-mounted /mnt/temp
を行うことは可能ですか?デバイスがマウントされていない場合には0を返すように? rm -f
枚
解決
リターンコードを無視するための標準的なトリックが常に成功と評価するブール式でコマンドをラップすることです。
umount .... || /bin/true
他のヒント
あなたのumount
戻っデバイスが搭載されていない1は、あなたがそのようにそれを行うことができますと仮定します:
umount … || [ $? -eq 1 ]
その後、bashはumount
戻り0または1(すなわち、正常アンマウントまたはデバイスがマウントされていない)場合はエラーを負いませんが、他のコードが返された場合、スクリプトを停止します(例:あなたは、デバイスをアンマウントするには、no権限を持っていません)。
「:」もっとFUL使用し、同様のソリューションを求めていましたが、スクリプトのノウハウをいただきましたが起こってみましょう。
私はちょうど発見しました。
umount ...... || { echo "umount failed but not to worry" ; : ; }
メッセージとの真のこの戻り、アンマウントは失敗したもののます。
所属していません StackOverflow