ユーザーがメニューページで 1 を押すたびに、メソッド inputInfo() を使用して詳細のユーザー入力を取得しようとしています。問題は、入力の最初のラウンドの後です。人の別のレコードを入力したい場合は、前のレコードを印刷し続けます。
1 に答える
1
読み込んだ変数は while ループ条件に対して有効であるため、while ループは最初のケースの後に有効です。そのため、$name には前回の実行からの有効な値が含まれているため、プロンプトが呼び出されることはありません。
inputInfo() {
nameRegex="[0-9]"
name=""
while [[ !$name =~ $nameRegex || -z $name ]]; do
echo "Enter name"
read name
if [[ $name =~ $nameRegex || -z $name ]]; then
echo "Name can only contain numbers or blank"
fi
done
while ループの条件に失敗するように読み取り変数を設定するだけです。上記のように値をゼロに設定すると、問題が解決します。
于 2013-10-25T05:28:13.693 に答える