$ 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
, $PS2
und $PS4
einen Wert haben und wie beabsichtigt arbeiten. $PS3
leer ist (oder eine Leerstelle enthält, Tab, etc.), aber select
unter 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 set
Teil. Benutzer kann versuchen, es auf leeres Zeichen oder Leerzeichen oder vielleicht sogar null zu setzen