我有一个unix脚本,我在其中调用函数。 我希望函数应该在任何命令失败的情况下立即返回。
但检查$?在每一个命令之后我都做不到。还有其他办法吗?
答案 0 :(得分:1)
可能逐行从文件中运行脚本(当然,因为每个函数的行长一行)。
也许以下脚本可以作为起点:
#!/bin/sh
while read l
do
eval "$l || break"
done <<EOF
echo test | grep e
echo test2 | grep r
echo test3 grep 3
EOF
答案 1 :(得分:0)
这是我之前回答后的另一个想法。它适用于 bash 脚本,并且要求您的功能非常简单(管道可能会导致一些问题):
#!/bin/bash
set -o monitor
check() {
[ $? -eq 0 ] && exit
}
trap check SIGCHLD
/bin/echo $(( 1+1 ))
/bin/echo $(( 1/0 ))
/bin/echo $(( 2+2 ))
此外:函数需要是外部命令(这就是我使用/bin/echo
而不是echo
)的原因。问候。