我正在尝试编写我的第一个Bash脚本,它接受类似域的用户输入并运行Linux命令:host -t ns [user input]
。
但是我的代码对我不起作用:
#!/bin/bash
read -p "Please enter a domain:" domain
if domain=grep -e /^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}$/;
do host -t ns $domain; dns
fi
echo $dns ;done
E:我一直得到的错误是:
意外标记“do”
附近的语法错误
答案 0 :(得分:0)
您需要then
,而不是do
- do
是for循环,而不是if语句。另外,他们使用domain
变量的方式是错误的。正确的方法是:
if grep -qE '^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}$' <<< "$domain"; then
dns=$(host -t ns "$domain")
fi
grep -q
- 不产生输出;当匹配时只退出0,否则退出1(如果给出错误的参数,则退出2)-E
适用于您正在使用的扩展正则表达式(ERE)/.../
<<<
是此字符串dns=$(...)
是命令替换