쉘 스크립트에서 현재 줄 번호를 인쇄하고 싶습니다. $LINENO
Bash 쉘의 변수 에 대해 알고 있지만 Bourne 쉘에는 존재하지 않는 것 같습니다. 줄 번호를 얻는 다른 변수나 방법이 있습니까?
답변1
LINENO
ksh의 기능이며 bash 및 zsh에도 있습니다. Bourne 쉘, POSIX 사양 또는 대시에는 그러한 기능이 없습니다. 줄 번호가 필요한 경우 해당 기능이 있는 셸에서 스크립트가 실행되는지 확인하세요. 대부분의 시스템은 bash 또는 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
답변2
너할 수 있다스크립트 후처리
awk '{gsub(/[$]LINENO/,FNR);print}' script_template > script
하지만 대개 문제가 발생합니다템플릿은 유지되어야 하며 편집이 이루어질 때마다 스크립트가 생성되어야 합니다.