我正在编写一些 shell 脚本,要求用户提供域名。我想提示用户循环输入,如果输入不是有效的域名,则写入错误消息。
基本上,代码应如下所示:
#!/bin/bash
read -p "Enter domain name: " DOMAIN_NAME
while [[ testing for valid domain name goes here ]]
do
echo ''
echo 'You entered an invalid domain name. Please re-enter.'
echo '... more error message data ....'
echo ''
read -p "Enter domain name: " DOMAIN_NAME
done
echo "You entered domain name: $DOMAIN_NAME"
Run Code Online (Sandbox Code Playgroud)
我发现了一些示例,展示了如何使用“=~”运算符来测试正则表达式。然而,这些例子都显示了UNTIL循环。使用问题Check valid (sub)domain with regex in bash答案中的正则表达式,示例如下:
# !/bin/bash
until [[ "$DOMAIN_NAME" =~ ^([a-zA-Z0-9](([a-zA-Z0-9-]){0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,5}$ ]]
do
read -p "Enter …Run Code Online (Sandbox Code Playgroud)