Em quais situações PS2, PS3, PS4 são usadas como prompt?

22

Quando eu faço logon no shell, vejo o prompt cujo valor é armazenado no PS1.

Eu também encontrei outro prompt (mas não sei qual) quando usei a sintaxe here-document:

bc << HERE
>

Mas isso é todos os tipos de prompts. Eu encontrei até agora. Que tipo de situações evocam os diferentes tipos de prompts?

    
por Abdul Al Hazred 31.03.2015 / 22:10

1 resposta

32

Veja o que a documentação da base diz:

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 ''+ ''.

Portanto, PS1 é o seu prompt normal "aguardando um comando", PS2 é o prompt de continuação que você viu depois de digitar um comando incompleto, PS3 é mostrado quando o comando select está aguardando entrada e PS4 é o prefixo da linha de rastreio de depuração.

A documentação que eu citei não diz, mas o padrão para PS3 no bash é #? :

$ select x in foo bar baz; do echo $x; done
1) foo
2) bar
3) baz
#? 3
baz
#? 2
bar
#? ^C
    
por 31.03.2015 / 22:20