Dans quelles situations la PS2, la PS3, la PS4 sont-elles utilisées comme invite?

31

Lorsque je me connecte au shell, je vois l'invite dont la valeur est stockée dans PS1.

J'ai également rencontré une autre invite (mais je ne sais pas laquelle) lorsque j'ai utilisé la syntaxe ici-document:

bc << HERE
>

Mais ce sont tous les types d'invites. J'ai rencontré jusqu'à présent. Quels types de situations évoquent les différents types d'invites?

Abdul Al Hazred
la source

Réponses:

43

Voici ce que dit la documentation 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 ``+ ''.

Donc, PS1est votre invite normale "en attente d'une commande", PS2est l'invite de continuation que vous avez vu après avoir tapé une commande incomplète, PS3s'affiche lorsque leselect commande attend l'entrée, et PS4est le préfixe de la ligne de trace de débogage.

La documentation que j'ai citée ne le dit pas, mais la valeur par défaut pour PS3dans bash est #?:

$ select x in foo bar baz; do echo $x; done
1) foo
2) bar
3) baz
#? 3
baz
#? 2
bar
#? ^C
dhag
la source
2
parfait!!! à quoi sert la commande select?
Abdul Al Hazred
10
selectest un moyen simple de faire des menus interactifs simples, voir ss64.com/bash/select.html pour une description plus complète.
dhag
@dhag, donc c'est comme if else..?
Pacerier