Bash脚本在grep语句上终止

时间:2018-07-13 07:55:39

标签: linux bash shell

难以理解为什么我的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'语句处停止并退出。它不会执行脚本的其余部分。

任何帮助在这里都将受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

grep命令将返回退出状态1,以指示何时没有匹配的行,这将导致变量分配失败。最好直接在脚本中执行命令,然后使用$?

更改脚本的逻辑,以便您可以直接使用状态:

grep -iwo 'disabled' $HOME/$MYHOST-$MYTIMESTAMP/$MYHOST-$MYTIMESTAMP-anyquery.txt
if [[ $? = 0 ]];