我不是脚本编写的高手,所以我必须在这里问:)
如何实现错误处理:
find . -type f|sed 's_\.\/__' > $PATH
即。当这不成功时中止。
非常感谢您提前 托马斯
答案 0 :(得分:1)
尝试使用&&和&或||
find . -type f|sed 's_./__' > $PATH && if_true_do_something || if_false_do_something
答案 1 :(得分:0)
首先,你的命令至少肯定会失败,因为$ PATH是一条无效的单一路径。
find . -type f | sed 's_\.\/__' > $PATH
如果要检查两个命令是否运行良好,请使用pipefail
选项,如果沿线的任何命令返回一个,而不仅仅是最后一个命令,则管道调用将返回非零状态。 / p>
set -o pipefail ## You have this only once in the script.
find . -type f | sed 's_\.\/__' > $PATH || {
echo "Failed."
exit 1 ## This probably is what you mean to abort.
}
# Shell script continues here...
替代方案:
...
find . -type f | sed 's_\.\/__' > $PATH
if [[ $? -ne 0 ]]; then
echo "Failed."
exit 1
fi
示例:
> set +o pipefail ## Disable pipefail (default).
> true | false
> echo $?
1
> false | true
> echo $?
0
> set -o pipefail ## Enable pipefail.
> true | false
> echo $?
1
> false | true
> echo $?
1
请注意,即使false
不在最后,最后一个命令也会返回1。在禁用pipefail
时,即使其中一个命令(false
)返回1,管道命令仍会返回0。