Em quais situações o PS2, PS3, PS4 é usado como prompt?

31

Quando faço logon no shell, vejo o prompt cujo valor está armazenado no PS1.

Também encontrei outro prompt (mas não sei qual) quando usei a sintaxe aqui do documento:

bc << HERE
>

Mas esse é todo o tipo de avisos. Eu encontrei até agora. Que tipo de situações evocam os diferentes tipos de avisos?

Abdul Al Hazred
fonte

Respostas:

43

Aqui está o que a documentação do bash 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 prompt normal "aguardando um comando", PS2o prompt de continuação que você viu após digitar um comando incompleto, PS3é mostrado quando o selectcomando está aguardando a entrada e PS4é o prefixo da linha de rastreamento de depuração.

A documentação que citei não diz isso, mas o padrão para PS3no bash é #?:

$ select x in foo bar baz; do echo $x; done
1) foo
2) bar
3) baz
#? 3
baz
#? 2
bar
#? ^C
dhag
fonte
2
perfeito!!! para que serve o comando select?
Abdul Al Hazred
10
selecté uma maneira básica de criar menus interativos simples, consulte ss64.com/bash/select.html para obter uma descrição mais completa.
dhag 31/03
@ Dhag, então é como if else..?
Pacerier