Я пишу сценарий оболочки Korn, где у меня есть функция, как этотКак выполнить несколько команду после двойных труб в сценарии оболочки
#!/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; } 'может быть? –
Мне нравится стиль этой функции - сначала удалите исключения из пути, и избегайте вложенных ifs. –