А есть ли в оболочке Korn эквивалент PROMPT_COMMAND?
В Bash я могу делать вызовы функций с параметром, когда одно входное слово соответствует регулярному выражению. Может ли оболочка Korn делать это?
Скажем, ksh88.
Например, в Bash я могу вызвать функцию, введя в командной строке любое отдельное слово, соответствующее регулярному выражению, выполнив:
command_not_found_handle()
{
if [[ $1 =~ ^[A-Z]+\.[0-4]+$ ]]; then
callFunction "$1"
return 222;
else
printf "command not found: %s\n" "$1" >&2
return 127
fi
}
и
PROMPT_COMMAND='[[ $? -eq 222 ]] && callFunction'
Можно ли сделать что-то подобное в ksh88?
решение1
ksh93
может также поддерживать PROMPT_COMMAND
функцию дисциплины (черездгк).
function PS1.get
{
integer exitval=$?
eval .sh.value=$($PROMPT_COMMAND)'$PS1'
return $exitval
}
решение2
ksh88
уже есть кое-что получше метода bash.
Есть особое trap
состояние, называемое ERR
. Так что попробуйте это:
trap 'echo bla' ERR
false
и вы видите, что это echo bla
выполняется.
Кстати: Это также работает с bash
...