$ 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
Comme vous pouvez le voir, $PS1
, $PS2
et $PS4
ont une valeur et le travail comme prévu. $PS3
est vide (ou contient un espace, une tabulation, etc.), mais select
utilise #?
for $PS3
, mais lorsque la variable est définie, cela fonctionne normalement.
Pourquoi cela se comporte-t-il ainsi et pourquoi a-t-il été conçu de cette façon?
If this variable is not set
partie. L'utilisateur peut essayer de le définir sur un caractère ou un espace vide, ou peut-être même nul