$ PS3が空になっていても$ PS3の内容が表示されるのはなぜですか?

$ PS3が空になっていても$ PS3の内容が表示されるのはなぜですか?
$ 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空ですが(またはスペース、タブなどが含まれています) for をselect使用しますが、変数が設定されている場合は正しく機能します。#?$PS3

なぜこのように動作し、なぜこのように設計されたのですか?

ベストアンサー1

なぜなら医師がこう言ったからです。

https://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html#Bash-Variables

PS3

この変数の値は、コマンドを選択するためのプロンプトとして使用されます。この変数が設定されていない場合、select コマンドは「#?」というメッセージを表示します。

おすすめ記事