Und hat die Korn-Shell ein Äquivalent zu PROMPT_COMMAND?
In Bash kann ich Funktionsaufrufe mit einem Parameter durchführen, wenn ein einzelnes Eingabewort mit einem regulären Ausdruck übereinstimmt. Kann die Korn-Shell das?
Sagen wir ksh88.
Beispielsweise kann ich in Bash eine Funktion aufrufen, indem ich in der Befehlszeile ein beliebiges einzelnes Wort eingebe, das einem regulären Ausdruck entspricht:
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
}
Und
PROMPT_COMMAND='[[ $? -eq 222 ]] && callFunction'
Kann etwas Ähnliches in ksh88 gemacht werden?
Antwort1
ksh93
PROMPT_COMMAND
kann auch mit einer Disziplinarfunktion unterstützen (überdgk).
function PS1.get
{
integer exitval=$?
eval .sh.value=$($PROMPT_COMMAND)'$PS1'
return $exitval
}
Antwort2
ksh88
hat bereits etwas Besseres als diese Bash-Methode.
Es gibt einen speziellen trap
Zustand namens ERR
. Versuchen Sie also Folgendes:
trap 'echo bla' ERR
false
und Sie sehen, dass es echo bla
ausgeführt wird.
BTW: Das funktioniert auch mit bash
...