[英]Bash script terminates on grep statement
无法理解为什么我的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'语句处停止并退出。 它不会执行脚本的其余部分。
在这里,任何帮助将不胜感激。
grep
命令将返回退出状态1,以指示何时没有匹配的行,这将导致变量分配失败。 最好直接在脚本中执行命令,然后使用$?
。
更改脚本的逻辑,以便您可以直接使用状态:
grep -iwo 'disabled' $HOME/$MYHOST-$MYTIMESTAMP/$MYHOST-$MYTIMESTAMP-anyquery.txt
if [[ $? = 0 ]];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.