微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用bash搜索多个域名的可用性?

如何解决如何使用bash搜索多个域名的可用性?

我正在尝试使用此脚本搜索多个域名的可用性,但它不起作用,错误在哪里?谢谢

#!/bin/bash 

WEB=('madmane1' 'madmane2' 'madmane3' 'madmane4' 'madmane5' 'madmane6' 'madmane7' 'madmane8' 'madmane9')
 
ELEMENTS=${#WEB[@]} 
 
for (( i=0;i<$ELEMENTS;i++)); do 
      whois ${WEB[${i}]}$'.com' | egrep -q \ 
      '^No match|^NOT FOUND|^Not fo|AVAILABLE|^No Data Fou|has not been regi|No entri' 
      if [ $? -eq 0 ]; then 
          echo "${WEB[${i}]}$'.com' : available" 
      fi 
done 

错误如下:

line 9: ^No match|^NOT FOUND|^Not fo|AVAILABLE|^No Data Fou|has not been regi|No entri: command not found

解决方法

将内容分配给数组,然后通过将其分配给字符串而不用引号来破坏它似乎是这里的主要错误,尽管这不是您收到语法错误的原因。

您还想避免testing ”$?” to see if a command succeeded or not,an anti-pattern

另见Correct Bash and shell script variable capitalization

错误消息的原因似乎是反斜杠后面有一个空格,因此您要转义空格而不是换行符,因此 shell(在某种意义上是正确的)将下一行解析为新命令。>

#!/bin/bash 

web=('madmane1' 'madmane2' 'madmane3' 'madmane4' 'madmane5' 'madmane6' 'madmane7' 'madmane8' 'madmane9')
 
for domain in "${web[@]}"; do
    if whois "$domain.com" |
        grep -Eq '^No match|^NOT FOUND|^Not fo|AVAILABLE|^No Data Fou|has not been regi|No entri' 
    then 
        echo "$domain.com: available" 
    fi 
done

今后,在寻求人工帮助之前,可能先尝试 http://shellcheck.net/

,

我想我用 https://www.shellcheck.net/ 解决了这个问题 现在是这样:

#!/bin/bash 

WEB=('madmane1' 'madmane2' 'madmane3' 'madmane4' 'madmane5' 'madmane6' 'madmane7' 'madmane8' 'madmane9')
 
ELEMENTS=${#WEB[@]} 
 
for (( i=0;i<$ELEMENTS;i++)); do 
      whois "${WEB[${i}]}"$'.com' | grep -E \
      '^No match|^NOT FOUND|^Not fo|AVAILABLE|^No Data Fou|has not been regi|No entri' 
      if [ $? -eq 0 ]; then 
          echo "${WEB[${i}]}$'.com' : available" 
      fi 
done 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。