我编写了一个相当简单的脚本来绘制单字域仍然可用的内容。我在第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
答案 0 :(得分:1)
尝试使用双括号和引号外的*
if [[ $(whois $i) == *"No match for"* ]]
答案 1 :(得分:1)
引用参数:
if [ "$(whois $i)" == "*No match for*" ]
否则,响应的所有单词将被拆分为test
命令的单独参数。
或者您可以使用内置的条件运算符。它不会对变量或命令替换进行单词拆分。
if [[ $(whois $i) == "*No match for*" ]]