W jakich sytuacjach PS2, PS3, PS4 są używane jako zachęty?

31

Kiedy loguję się do powłoki, widzę monit, którego wartość jest przechowywana w PS1.

Zetknąłem się również z innym monitem (ale nie wiem, który), gdy użyłem składni dokumentu tutaj:

bc << HERE
>

Ale to są wszystkie rodzaje podpowiedzi. Do tej pory spotkałem. Jakie sytuacje wywołują różne rodzaje podpowiedzi?

Abdul Al Hazred
źródło

Odpowiedzi:

43

Oto, co mówi dokumentacja 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 ``+ ''.

Tak więc, PS1jest to zwykły monit „oczekiwania na polecenie”, PS2to monit o kontynuację, który zobaczyłeś po wpisaniu niekompletnego polecenia, PS3jest wyświetlany, gdy selectpolecenie czeka na wejście, i PS4jest prefiksem linii śledzenia debugowania.

Dokumentacja, którą cytowałem, nie mówi tego, ale domyślna wartość PS3w bash to #?:

$ select x in foo bar baz; do echo $x; done
1) foo
2) bar
3) baz
#? 3
baz
#? 2
bar
#? ^C
dhag
źródło
2
doskonały!!! do czego służy polecenie select?
Abdul Al Hazred
10
selectto prosty sposób na tworzenie prostych interaktywnych menu, zobacz ss64.com/bash/select.html, aby uzyskać pełniejszy opis.
wtorek
@dhag, więc to jak if else..?
Pacerier