小编phu*_*oft的帖子

在 WHILE 中使用 Bash“=~” 运算符而不是 UNTIL 循环

我正在编写一些 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)

shell-script regular-expression testing

0
推荐指数
1
解决办法
362
查看次数

标签 统计

regular-expression ×1

shell-script ×1

testing ×1