【发布时间】:2017-05-31 08:55:00
【问题描述】:
在以下示例中,我希望在出现错误时删除foo。不幸的是,它不起作用。
foo:
perl -e 'die()' > $@ || [rm $@ -a true]
怎么了?
【问题讨论】:
-
你试过
perl -e 'die()' > $@ || rm $@吗? -
是的,但它不会传播第一个进程的
$?。 -
然后
perl -e 'die()' > $@ || { rm $@; exit 1; }(除非您需要准确传播第一个进程的退出状态) -
应引用特殊变量
$@(例如perl -e 'die()' > "$@" || rm "$@"。 -
@Leon
perl -e 'die()' > $@ || { rm $@; false;}应该也可以工作并且避免退出太快