$ echo $PS1
$
$ echo $PS2
>
$ echo $PS3
$ echo $PS4
+
$ select i in 1 2 3
> do
> case $i in
> 1)
> echo 1
> ;;
> *)
> ;;
> esac
> done
1) 1
2) 2
3) 3
#? 1
1
$ PS3="##? "
$ select i in 1 2 3; do case $i in 1) echo 1; ;; *) ;; esac; done
1) 1
2) 2
3) 3
##? 1
1
Wie Sie sehen können $PS1, $PS2und $PS4einen Wert haben und wie beabsichtigt arbeiten. $PS3leer ist (oder eine Leerstelle enthält, Tab, etc.), aber selectunter Verwendung von #?für $PS3, aber wenn die Variable gesetzt ist, arbeitet es in der Regel.
Warum verhält sich das so und warum wurde es so entworfen?
If this variable is not setTeil. Benutzer kann versuchen, es auf leeres Zeichen oder Leerzeichen oder vielleicht sogar null zu setzen