Я отлаживаю скрипт в DASH SHELL, используя #!/bin/sh -x
, и я хотел бы показать номер строки скрипта при отладке.
Уже пытались изменить переменную PS4 (как показано в этот ответ ), но безуспешно, потому что она работает только в bash, мне нужна оболочка.
PS4='Line ${LINENO}: '
Я ожидаю следующий вывод:
123: + echo test
Но в $LINENO
нет ничего в оболочке.
Я использую Ubuntu 16.04 x64 и dash версии 0.5.8-2.1ubuntu2 500
В частности, я пытаюсь отладить файл конфигурации Virtualbox для сборки его на Linux.
Вот некоторые части сценария и как я попробовал.
#!/bin/sh -x
PS4='Line ${LINENO}: '
LC_ALL=C
export LC_ALL
# append some extra paths
PATH="$PATH:/opt/gnome/bin"
# Solaris (order of paths important for tr, grep, sed to work)
PATH="/usr/xpg4/bin:$PATH:/usr/local/bin:/usr/sfw/bin:/usr/ccs/bin"
ORGPATH=$PATH
...
echo " disabled hardening!"
echo " +++ WARNING +++ WARNING +++ WARNING +++ WARNING +++ WARNING +++ WARNING +++"
echo ""
fi
echo "Enjoy!"
cleanup
результаты:
Line : [ 1 -ne 0 ]
Line : test -z nofatal
Line : echo
Line : echo
Line : return 1