Bash:如何在while循环中格式化这些条件?

时间:2016-03-30 16:36:27

标签: bash

如何将下面的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个参数,但我不确定。

我在下面找到了这个来源,我可以继续尝试一个错误但是我想知道为什么我选择以这种方式格式化这个条件。

Bash scripting, multiple conditions in while loop

1 个答案:

答案 0 :(得分:2)

您可以像这样使用循环:

read
  • break用于while循环,它将循环循环,直到在循环内执行$name == *[a-zA-Z]*
  • name将检查输入*中是否存在字母。 id -u用于任何一方的通配。
  • 如果在用户数据库中找到输入的名称,则
  • 0命令将返回break,当id命令失败时,>/dev/null 2>&1将被执行(用户名是唯一的)。
  • id用于从id命令中删除stdout / stderr,因为我们只关心{{1}}的返回状态。