砸向脚本-卸载装置,但不要失败,如果它不是安装?
题
我写的一个庆典和我的脚本 errexit
设置,所以会死,如果任何命令不返回0出口码,即如果任何命令不能成功完成。这是确保我砸脚本是稳健。
我已经装载一些文件系统中复制一些文件,卸载它。我把一个 umount /mnt/temp
在开始这样,它将卸下它之前做任何事情。然而,如果它不是安装后卸载将失败和阻止我的脚本。
这是可以做到 umount --dont-fail-if-not-mounted /mnt/temp
?因此,它将返回0如果设备不安?喜欢 rm -f
?
解决方案
标准招忽视返回代码是包裹的命令,在布尔的表达,评估是成功:
umount .... || /bin/true
其他提示
假设你的 umount
返回1时的设备没有安装,你可以做这样的:
umount … || [ $? -eq 1 ]
然后砸将不承担任何错误,如果 umount
返回0或1(即卸载的成功或设备没有安装),但将停止脚本,如果任何其他代码返回(例如你没有权限到卸载设备)。
我刚刚发现的":"更多使用成功,并希望类似的解决方案,但让脚本知道发生了什么.
umount ...... || { echo "umount failed but not to worry" ; : ; }
这回真正的消息,虽然卸载失败。
不隶属于 StackOverflow