Bash:如何在while循环中格式化这些条件?
如何将下面的2个条件格式化为一个while循环,以确保data enter至少包含一个字母字符,并且在/dev/null目录中不存在 一, 二, 我知道while循环中的两个参数有不同的格式,因为它取决于这两个参数,但是我不确定 我在下面找到了这个来源,我可以继续尝试一个错误,但是我想知道为什么我选择以这种方式格式化条件Bash:如何在while循环中格式化这些条件?,bash,Bash,如何将下面的2个条件格式化为一个while循环,以确保data enter至少包含一个字母字符,并且在/dev/null目录中不存在 一, 二, 我知道while循环中的两个参数有不同的格式,因为它取决于这两个参数,但是我不确定 我在下面找到了这个来源,我可以继续尝试一个错误,但是我想知道为什么我选择以这种方式格式化条件 您可以这样使用循环: while read -r -p "Please enter valid input: " name; do [[ $name == *[a-zA-
您可以这样使用循环:
while read -r -p "Please enter valid input: " name; do
[[ $name == *[a-zA-Z]* ]] && { id -u "$name" >/dev/null 2>&1 || break; }
done
echo "Got a good name: $name"
用于while循环,该循环将停止循环,直到在循环内执行read
break
将检查输入中是否存在字母表$name==*[a-zA-Z]*
<代码>*用于任一侧的全球化name
- 如果在用户数据库中找到输入的名称,并且在
命令失败时执行id
命令(用户名是唯一的),则break
命令将返回id-u
0
用于从/dev/null 2>&1
命令中禁止stdout/stderr,因为我们只关心id
的返回状态id
while read -r -p "Please enter valid input: " name; do
[[ $name == *[a-zA-Z]* ]] && { id -u "$name" >/dev/null 2>&1 || break; }
done
echo "Got a good name: $name"
用于while循环,该循环将停止循环,直到在循环内执行read
break
将检查输入中是否存在字母表$name==*[a-zA-Z]*
<代码>*用于任一侧的全球化name
- 如果在用户数据库中找到输入的名称,并且在
命令失败时执行id
命令(用户名是唯一的),则break
命令将返回id-u
0
用于从/dev/null 2>&1
命令中禁止stdout/stderr,因为我们只关心id
的返回状态id
while read -r -p "Please enter valid input: " name; do
[[ $name == *[a-zA-Z]* ]] && { id -u "$name" >/dev/null 2>&1 || break; }
done
echo "Got a good name: $name"