我寫一個Korn Shell腳本在那裏我有這樣如何在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
...
}
但它不工作,第一個return語句總是得到無論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; }'也許? –
我喜歡那個函數的風格 - 先排除異常,並避免嵌套的ifs。 –