LINENO 및 BASH_LINENO

LINENO 및 BASH_LINENO

그래서 왜 이런 일이 발생하는지 잘 모르겠습니다. ${LINENO}에는 일반적으로 스크립트의 줄이 포함되어 있고 BASH_LINENO는 배열에 대한 입력으로 BASH_SOURCE를 기반으로 한다는 것을 알고 있습니다.

$ (echo hi;declare -p LINENO BASH_LINENO;echo -e "My LINENO\tis\t${LINENO}\nMy BASH_LINENO\tis\t${BASH_LINENO[@]}")
hi
declare -- LINENO="34"
declare -a BASH_LINENO=()
My LINENO   is  34
My BASH_LINENO  is

그러나 대화형으로 작업할 때 LINENO가 30+를 반환하고 echo를 실행할 때마다 증가하는 이유는 무엇입니까(대화형이라는 말은 pty가 연결되고 fd 0, 1 및 2 셸이 활성화된다는 의미입니다). LINENO가 여러 번 실행했을 때 33, 34, 35 등인 이유를 설명할 수 있는 사람이 있나요?

답변1

이게 뭐야?큰 타격(1)말한다 (굵은 글씨로):

레노

    이 매개변수가 인용될 때마다 쉘은 이를 스크립트나 함수에서 현재 연속 행 번호(1부터 시작)를 나타내는 10진수로 대체합니다. 스크립트나 함수 내부에 있지 않으면 대체된 값이 의미가 있다고 보장되지 않습니다. LINENO를 설정하지 않으면 나중에 재설정하더라도 특수 속성이 손실됩니다.

관련 정보