【问题标题】:Whois scraping bash script—if clause errorsWhois 抓取 bash 脚本——if 子句错误
【发布时间】:2015-11-09 22:10:54
【问题描述】:

我编写了一个相当简单的脚本来确定哪些单字域仍然可用。我在第 7 行的 if 子句中遇到错误,但我看不出它有什么问题。

#!/bin/bash

for i in $(cat /usr/share/dict/words);
do
        i="$i.com"
        echo $i processing `date`
        if [ $(whois $i) == "*No match for*" ]
        then
                echo $i AVAILABLE
#               echo "$i">>domains.available.`date "+%Y%m%d"`
        else
                echo $i unavailable
#               echo "$i">>domains.unavailable.`date "+%Y%m%d"`
        fi
done

我在网上查找了类似的简单脚本,它们在语法上似乎相同。

【问题讨论】:

  • 旁注:没有 WHOIS 记录并不一定意味着域可用。
  • 哦,当然;它只是提供了一个开始手动查询的起点。

标签: bash whois


【解决方案1】:

试试双括号和引号外的 *

if [[ $(whois $i) == *"No match for"* ]]

【讨论】:

    【解决方案2】:

    引用论点:

    if [ "$(whois $i)" == "*No match for*" ]
    

    否则响应中的所有单词将被拆分为test 命令的单独参数。

    或者您可以使用内置的条件运算符。它不会对变量进行分词或命令替换。

    if [[ $(whois $i) == "*No match for*" ]]
    

    【讨论】:

    • 后者(内置条件运算符的双括号)实际上确实解决了错误,但一直默默地给我假阴性。换句话说,$i=notarealdomainatall.com 仍然流向 else 块。
    • 您是否希望== 进行模式匹配而不是完全匹配?引号内的通配符不被视为模式字符。
    • 啊,是的,我是! 'No match for' 是一个不太可能来自 whois 查询的文字字符串 ;-)
    猜你喜欢
    • 1970-01-01
    • 2012-03-07
    • 2012-09-20
    • 1970-01-01
    • 2014-05-26
    • 2019-08-15
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多