ユーザーに入力を依頼するためのホンテールフォームがあります。続行する前に、誰かが3つの数字を入力するように強制する方法はありますか?
NUMBERS=$(whiptail --inputbox "Enter three numbers only" 8 78 000
--title "Three Numbers" 3>&1 1>&2 2>&3)
exitstatus=$? if [ $exitstatus = 0 ]; then
echo "User selected Ok and entered " $NUMBERS else
echo "User selected Cancel." fi
echo "(Exit status was $exitstatus)"
答え1
ユーザーが入力した内容を確認し、whiptail
有効な値を入力するまで繰り返すことができます。
#!/usr/bin/env bash
## I included the 000 in the regex below since
## you are populating your field with it. I assume you
## want 000 + 3 numbers.
until [[ $numbers =~ ^000[0-9]{3}$ ]]; do
numbers=$(whiptail --inputbox "Enter three numbers only" 8 78 000 --title "Three Numbers" 3>&1 1>&2 2>&3)
exitstatus=$?
if [ $exitstatus = 0 ]; then
echo "User selected Ok and entered " $numbers
else
echo "User selected Cancel."
break;
fi
done
echo "(Exit status was $exitstatus)"
私もNUMBERS
変更される予定ですnumbers
。通常、bashスクリプトでは大文字の変数名を使用しないでください。グローバル環境変数はすべて大文字であるため、混乱を招く可能性があります。