如果Bash脚本设置了-e,并且脚本中的命令返回错误,那么在脚本退出之前如何进行一些清理?
例如:
#!/bin/bash set -e mkdir /tmp/foo # ... do stuff ... rm -r /tmp/foo
我怎样才能确保删除/ tmp / foo,即使……中的某个命令做了什么……失败了?
以下是使用陷阱的示例:
原文链接:https://www.f2er.com/bash/387050.html#!/bin/bash set -e function cleanup { echo "Removing /tmp/foo" rm -r /tmp/foo } trap cleanup EXIT mkdir /tmp/foo asdffdsa #Fails
输出:
dbrown@luxury:~ $sh traptest t: line 9: asdffdsa: command not found Removing /tmp/foo dbrown@luxury:~ $
请注意,即使asdffdsa行失败,仍会执行清理.