KornShell (ksh) SegFault - PullRequest
       19

KornShell (ksh) SegFault

2 голосов
/ 05 февраля 2010

Я обнаружил, что следующий скрипт вызывает ошибку сегментации и ядро ​​в KornShell (ksh) в AIX. Может кто-нибудь объяснить, почему я получаю следующие результаты?

Ошибка сегмента
doOutput(){
  Echo "Something"
}

doOutput() >&1

OR

doOutput(){
  Echo "Something"
}

echo `doOutput()`

Нет вывода
doOutput(){
  Echo "Something"
}

doOutput()

Корректное
doOutput(){
  Echo "Something"
}

doOutput 

OR

doOutput(){
  Echo "Something"
}

doOutput >&1

Ответы [ 2 ]

2 голосов
/ 05 февраля 2010

Вызовы функций в оболочках, такие как ksh, не используют скобки. Они используются только во время определения функции.

Правильно:

doOutput(){
  Echo "Something"
}

doOutput

Если вы вызываете функцию с параметрами, вы разделяете их пробелами (без скобок):

doOutput(){
  Echo "$1 and then $2"
}

doOutput go stop

Некорректное:

doOutput(){
  Echo "Something"
}

doOutput()

Плюс, почему вы перенаправляете стандартный вывод на стандартный вывод (>&1)?

0 голосов
/ 05 февраля 2010

Вы нашли ошибку в ksh, и только ее авторы или те, кто имеет доступ к источнику, могут объяснить вам это. Настоящий ksh раньше не был открытым исходным кодом, но, возможно, это изменилось.

...