$ 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
正如你所看到的,$PS1
,$PS2
和$PS4
有一个值和工作像预期。$PS3
是空的(或包含一个空格,制表符,等),但select
使用#?
了$PS3
,但是当变量被设置,它工作正常。
为什么这样做如此,为什么要这样设计?
If this variable is not set
一部分。用户可以尝试将其设置为空白字符或空格,甚至可能为null