Вопрос

Есть ли у меня способ реализовать пользовательские поддельные сигналы в KSH? В настоящее время захватываю сигнал ERE и выходит. Однако из -за изменения, есть звонки, которые могут не вернуть успех, однако это действительное условие. В таком случае я хочу убедиться, что этот вызов генерирует другой сигнал или по -разному обрабатывать ошибку. Есть ли способ сделать это?

Это было полезно?

Решение

Вы можете использовать kill Чтобы отправить любой сигнал, который вы хотите для текущей оболочки. Вы можете использовать exit в подборке или return В функции, чтобы установить любой код ошибки, которую вы хотите.

Попробуйте этот сценарий:

#!/bin/ksh
trap 'echo USR1 signal processed' USR1
trap 'echo ERR signal processed' ERR
[[ $1 == a ]] && kill -s USR1 $$ || (exit 1)
echo "done"

Пример:

$ ./testsignal
ERR signal processed
done
$ ./testsignal a
USR1 signal processed
done

Другие советы

Возможно, вы могли бы просто обернуть заявления, коды выходов, вы хотите относиться специально в конструкции, которая просто сделала бы то, что вы хотите (используя »или« или «если не» конструкции и анализ кодов выхода).

Кажется, это гораздо более чистый стиль программирования, не так ли?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top