Получите номер строки в сценарии Оболочки Bourne

Чтобы проверить, является ли это корень, который запускает программу, необходимо звонить getuid().

6
28.09.2012, 23:53
2 ответа

LINENO ksh функция, также существующая в ударе и zsh. Нет такой функции в Оболочке Bourne в спецификации POSIX или в тире. При необходимости в номере строки удостоверьтесь, что сценарий выполняется под оболочкой, которая имеет функцию. Большинство систем имеет или удар или ksh доступный.

if [ -z "$LINENO" ]; then
  if type ksh >/dev/null 2>/dev/null; then
    exec ksh "$0" "$@"
  elif type bash >/dev/null 2>/dev/null; then
    exec ksh "$0" "$@"
  else
     echo 1>&2 "$0: Fatal error: unable to find a shell that supports LINENO."
     exit 100
  fi
fi
3
27.01.2020, 20:30

Вы могли выполнить последующую обработку свой сценарий

awk '{gsub(/[$]LINENO/,FNR);print}' script_template > script

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

0
27.01.2020, 20:30

Теги

Похожие вопросы