Whois抓取bash script-if子句错误

时间:2015-11-09 22:10:54

标签: bash whois

我编写了一个相当简单的脚本来绘制单字域仍然可用的内容。我在第7行if 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

[编辑:我应该补充一点,我在网上查找了类似的简单脚本,它们在语法上看起来完全相同。我确定我只是错过了一些令人眼花缭乱的东西,但是......]

[编辑2:最后的剧本,由piked提供更正,以及其他改进:]

#!/bin/bash

ava=/usr/local/share/scripts/domains.available.`date "+%Y%m%d"`
unava=/usr/local/share/scripts/domains.unavailable.`date "+%Y%m%d"` 

for i in $(cat /usr/share/dict/words);
do
    i="$i.com"
#   i="notarealdomainatall.com"
    echo $i processing `date`
    if grep -Fxq $i $ava
    then
        echo $i DUPLICATE, prev AVAILABLE
    elif grep -Fxq $i $unava
        then
            echo $i duplicate, prev unavailable
        else
            if [[ $(whois $i) == *"No match for"* ]]
            then
                echo $i AVAILABLE
                echo "$i">>$ava
            else
                echo $i unavailable
                echo "$i">>$unava
            fi
    fi
done

2 个答案:

答案 0 :(得分:1)

尝试使用双括号和引号外的*

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

答案 1 :(得分:1)

引用参数:

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

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

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

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