어떤 상황에서 PS2, PS3, PS4가 프롬프트로 사용됩니까? 사용할 때 또

쉘에 로그온하면 PS1에 값이 저장된 프롬프트가 표시됩니다.

here-document 구문을 사용할 때 또 다른 프롬프트가 나타 났지만 (어떤 프롬프트인지 모르겠습니다)

bc << HERE
>

그러나 그것은 모든 유형의 프롬프트입니다. 나는 지금까지 만났다. 어떤 종류의 상황이 다른 종류의 프롬프트를 유발합니까?



답변

bash 문서는 다음과 같습니다.

PS1    The  value  of  this parameter is expanded (see PROMPTING below)
       and used as the primary prompt string.   The  default  value  is
       ``\s-\v\$ ''.
PS2    The  value of this parameter is expanded as with PS1 and used as
       the secondary prompt string.  The default is ``> ''.
PS3    The value of this parameter is used as the prompt for the select
       command (see SHELL GRAMMAR above).
PS4    The  value  of  this  parameter  is expanded as with PS1 and the
       value is printed before each command  bash  displays  during  an
       execution  trace.  The first character of PS4 is replicated mul
       tiple times, as necessary, to indicate multiple levels of  indi
       rection.  The default is ``+ ''.

따라서 PS1일반적인 “명령을 기다리는 중”프롬프트이며, PS2불완전한 명령을 입력 한 후 표시되는 연속 프롬프트이며
명령을 입력
PS3할 때 표시 되며 디버깅 추적 행 접두사입니다.selectPS4

내가 인용 한 문서는 그렇게 말하지 않지만 PS3bash 의 기본값
#?다음과 같습니다.

$ select x in foo bar baz; do echo $x; done
1) foo
2) bar
3) baz
#? 3
baz
#? 2
bar
#? ^C