我想询问多个问题的用户输入,然后将输入存储在变量中,同时确保为每个问题输入的输入不为空,否则重复问题
到目前为止我已经
了input() {
if [ ! -z "$db*" ]; then
echo "Nothing entered" >&2;
return
else
break
fi
}
read -ep 'Enter your name >> [y/N]: ' name &&
input
read -ep 'Enter your email >> [y/N]: ' email &&
input
read -ep 'Enter your password >> [y/N]: ' password
input
答案 0 :(得分:2)
使用until
语句并使用[
检查非空:
until [ "$NAME" ]; do
printf "Name: "
read NAME
done
[ "$VAR" ]
命令的test
构造允许您测试变量是否为非空1。
答案 1 :(得分:0)
我正在使用read
和eval
的以下组合,您可以使用变量调用输入函数以保存输入并使用要打印的消息(input_not_empty "INPUTVAR" "message"
)< / p>
input()
{
local foo
echo -n "$2: "
read foo
eval "$1=\"$foo\""
}
input_not_empty()
{
input $1 "$2"
if [ -z "$(eval echo \$$1)" ]; then
echo "ERROR: input empty..."
exit 1
fi
}
input_not_empty NAME "your full name"
input_not_empty EMAIL "your full email"
echo "name is $NAME"
echo "email is $EMAIL
但请注意eval
!