$ 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
Như bạn có thể thấy, $PS1
, $PS2
và $PS4
có một giá trị và làm việc như dự định. $PS3
trống (hoặc chứa một khoảng trắng, tab, v.v.), nhưng select
đang sử dụng #?
cho $PS3
, nhưng khi biến được đặt, nó hoạt động bình thường.
Tại sao điều này hành xử theo cách này và tại sao nó được thiết kế theo cách này?
If this variable is not set
một phần. Người dùng có thể thử đặt nó thành ký tự trống hoặc dấu cách hoặc thậm chí là null