我正在编写一个Korn shell脚本,其中有一个函数如下:
#!/bin/ksh
myfunc() {
some_command1 || return 1
some_command2 || return 1
...
}
我使用双竖线和返回语句,以便函数在命令失败时立即返回。
但我也希望它在返回之前打印一些错误消息,我尝试过:
#!/bin/ksh
myfunc() {
some_command1 || echo "error while doing some_command1"; return 1
some_command2 || echo "error while doing some_command2"; return 1
...
}
但这并不起作用,第一条返回语句总是会被执行,无论 some_command1
是否成功。
而且
#!/bin/ksh
myfunc() {
some_command1 || (echo "error while doing some_command1"; return 1)
some_command2 || (echo "error while doing some_command2"; return 1)
...
}
似乎并不起作用,它似乎只从子进程返回而不是函数,some_command2
无论some_command1
成功还是失败都会被执行。
有没有一种方法可以将语句echo "error while doing some_command2"; return 1
分组,使它们仅在前一个命令失败时一起执行。
{ cmd1; cmd2; }
可能吗? - Mark Setchell