$ 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
Come si può vedere, $PS1
, $PS2
e $PS4
hanno un valore e il lavoro come previsto. $PS3
è vuoto (o contiene uno spazio, una scheda, ecc.), ma select
sta usando #?
per $PS3
, ma quando la variabile è impostata, funziona normalmente.
Perché questo si comporta in questo modo e perché è stato progettato in questo modo?
If this variable is not set
parte. L'utente può provare a impostarlo su un carattere o uno spazio vuoto, o forse anche null