$ 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 コマンドは「#?」というメッセージを表示します。