【发布时间】:2017-04-26 22:11:56
【问题描述】:
我试图在一个 while 循环中组合 2 个不同的逻辑语句,但是无法正确地获取逻辑,以便可以在 same 循环中评估 2 个不同的检查。例如,我有以下 2 条逻辑语句。
逻辑 1
判断输入的用户名是否为空,是否要求用户重新输入不同的用户名。
echo -ne "User Name [uid]$blue:$reset "
read USERNAME
USERNAME=$(echo "$USERNAME" | tr "[:upper:]" "[:lower:]")
while [[ -z "$USERNAME" ]]; do
echo ""
printf "%s\n" "The User Name CAN NOT be blank"
echo ""
echo -ne "User Name [uid]$blue:$reset "
read USERNAME;
USERNAME=$(echo "$USERNAME" | tr "[:upper:]" "[:lower:]")
done
逻辑 2
确定读取的用户名是否已经存在以及是否要求用户重新输入用户名。
echo -ne "User Name [uid]$blue:$reset "
read USERNAME
USERNAME=$(echo "$USERNAME" | tr "[:upper:]" "[:lower:]")
$(command -v getent) passwd "$USERNAME" &>/dev/null
while [[ $? -eq 0 ]]; do
echo ""
printf "%s\n" "$USERNAME exists in LDAP"
echo ""
echo -ne "User Name [uid]$blue:$reset "
read USERNAME;
USERNAME=$(echo "$USERNAME" | tr "[:upper:]" "[:lower:]")
$(command -v getent) passwd "$USERNAME" &>/dev/null
done
为了实现所描述的目标,我尝试了while 循环和嵌套if 语句,但此时我很困惑。基本上作为脚本的一部分,当要求用户输入用户名而不退出脚本直到输入有效值时,我希望将这两个逻辑语句组合起来。
【问题讨论】:
标签: bash if-statement while-loop logical-operators