如何将下面的2个条件格式化为一个while循环,这应该确保输入的数据至少包含一个字母字符,并且目录/ dev / null中尚不存在。
1
#name = "test123"
read -p "Enter you name: " name
until [[ "$name" =~ [A-Za-z] ]]; do
read -p "Please enter a valid name: " name
done
2
while id -u $name 2>/dev/null>1 ; do # Checks if username already exists
read -p "Please enter valid input: "
我知道在while循环中存在两种不同的方法,因为它取决于2个参数,但我不确定。
我在下面找到了这个来源,我可以继续尝试一个错误但是我想知道为什么我选择以这种方式格式化这个条件。
答案 0 :(得分:2)
您可以像这样使用循环:
read
break
用于while循环,它将循环循环,直到在循环内执行$name == *[a-zA-Z]*
。name
将检查输入*
中是否存在字母。 id -u
用于任何一方的通配。0
命令将返回break
,当id
命令失败时,>/dev/null 2>&1
将被执行(用户名是唯一的)。id
用于从id
命令中删除stdout / stderr,因为我们只关心{{1}}的返回状态。