¿En qué situaciones se usan PS2, PS3, PS4 como aviso?

31

Cuando inicio sesión en el shell, veo el mensaje cuyo valor se almacena en PS1.

También encontré otro aviso (pero no sé cuál) cuando utilicé la sintaxis del documento aquí:

bc << HERE
>

Pero ese es todos los tipos de indicaciones. Me he encontrado hasta ahora. ¿Qué tipo de situaciones evocan los diferentes tipos de indicaciones?

Abdul Al Hazred
fuente

Respuestas:

43

Esto es lo que dice la documentación de 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 ``+ ''.

Entonces, PS1es su aviso normal de "esperando un comando", PS2es el aviso de continuación que vio después de escribir un comando incompleto, PS3se muestra cuando el selectcomando está esperando la entrada y PS4es el prefijo de la línea de rastreo de depuración.

La documentación que cité no lo dice, pero el valor predeterminado para PS3en bash es #?:

$ select x in foo bar baz; do echo $x; done
1) foo
2) bar
3) baz
#? 3
baz
#? 2
bar
#? ^C
dhag
fuente
2
¡¡¡Perfecto!!! ¿Para qué sirve el comando select?
Abdul Al Hazred
10
selectes una manera rápida de hacer menús interactivos simples, consulte ss64.com/bash/select.html para obtener una descripción más completa.
Dhag
@dhag, ¿Entonces es así if else..?
Pacerier