バッシュスクリプト - デバイスをumount、それがマウントされていない場合は失敗しませんか?

StackOverflow https://stackoverflow.com/questions/1378331

質問

任意のコマンドが正常に完了しない場合、すなわち、任意のコマンドは、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" ; : ; } 

メッセージとの真のこの戻り、アンマウントは失敗したもののます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top