难以理解为什么我的bash脚本突然终止
echo "Checking for ANY QUERY"
dig +short $MYHOSTWITHOUTWWW any | tr '[A-Z]' '[a-z]' > $HOME/$MYHOST-$MYTIMESTAMP/$MYHOST-$MYTIMESTAMP-anyquery.txt
ANYQUERY_STATUS=`grep -iwo 'disabled' $HOME/$MYHOST-$MYTIMESTAMP/$MYHOST-$MYTIMESTAMP-anyquery.txt`
if [[ "$ANYQUERY_STATUS" = "disabled" ]];
then
echo "disabled" > $HOME/$MYHOST-$MYTIMESTAMP/$MYHOST-$MYTIMESTAMP-anyquerybug.txt
else
echo "enabled" > $HOME/$MYHOST-$MYTIMESTAMP/$MYHOST-$MYTIMESTAMP-anyquerybug.txt
fi
echo "Checking for Generic top level domains availabilty"
touch $HOME/$MYHOST-$MYTIMESTAMP/$MYHOST-$MYTIMESTAMP-domain-gtld.txt
但是,程序在'ANYQUERY_STATUS =`grep -iwo'disabled'语句处停止并退出。它不会执行脚本的其余部分。
任何帮助在这里都将受到高度赞赏。
答案 0 :(得分:2)
grep
命令将返回退出状态1,以指示何时没有匹配的行,这将导致变量分配失败。最好直接在脚本中执行命令,然后使用$?
。
更改脚本的逻辑,以便您可以直接使用状态:
grep -iwo 'disabled' $HOME/$MYHOST-$MYTIMESTAMP/$MYHOST-$MYTIMESTAMP-anyquery.txt
if [[ $? = 0 ]];