Bash主机DNS脚本

时间:2017-06-15 05:59:17

标签: bash

我正在尝试编写我的第一个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”

附近的语法错误

1 个答案:

答案 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=$(...)是命令替换