谁在刮bash脚本—;if子句错误
我编写了一个相当简单的脚本,以确定哪些单词域仍然可用。我在第7行中得到了一个错误,if子句,但是我看不出有什么错误。请指出我明显的错误!:-) [编辑:我应该补充一点,我在网上查到了类似的直截了当的脚本,它们在语法上似乎完全相同。我肯定我只是漏掉了一些显而易见的东西,但是…] [编辑2:最终脚本,包括piked提供的更正以及其他改进:]谁在刮bash脚本—;if子句错误,bash,whois,Bash,Whois,我编写了一个相当简单的脚本,以确定哪些单词域仍然可用。我在第7行中得到了一个错误,if子句,但是我看不出有什么错误。请指出我明显的错误!:-) [编辑:我应该补充一点,我在网上查到了类似的直截了当的脚本,它们在语法上似乎完全相同。我肯定我只是漏掉了一些显而易见的东西,但是…] [编辑2:最终脚本,包括piked提供的更正以及其他改进:] #!/bin/bash ava=/usr/local/share/scripts/domains.available.`date "+%Y%m%d"` una
#!/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
尝试使用双括号和引号外的*
if [[ $(whois $i) == *"No match for"* ]]
引用论点:
if [ "$(whois $i)" == "*No match for*" ]
否则,响应的所有单词将被拆分为test
命令的单独参数
或者可以使用内置的条件运算符。它不进行变量的分词或命令替换
if [[ $(whois $i) == "*No match for*" ]]
旁白:没有WHOIS记录并不一定意味着有域名可用;它只是提供了一个开始手动查询的起点。后者(内置条件运算符的双括号)实际上解决了错误,但默默地给了我一致的错误否定。换句话说,
$i=notarealdomainatall.com
仍然流到else块。您是否希望=
进行模式匹配而不是精确匹配?引号内的通配符不被视为模式字符。啊,是的,我是'不匹配是whois查询不太可能产生的文本字符串;-)
if [[ $(whois $i) == "*No match for*" ]]