评论不被可靠忽略

时间:2014-06-16 14:07:38

标签: regex bash

我真的很困惑。我从两个单独的文件中读取了Hostnames和Commands中的嵌套循环。在文件中我想放置“#”注释行,主脚本需要忽略这些行。在下面的脚本中,命令被正确读取,“#”注释行被很好地忽略,但是读取Hostnames文件得到第一个主机名,然后终止while / do循环!
如果我实际上在主机名中放了“#”注释行,那么它会一直读取它们,直到它到达geniune主机名,然后终止循环。

# Read the Hostname from Hostnames.txt
while read HOST
[[ "$HOST" =~ ^#.*$ ]] && continue  
do  
.  
  while read Cmd1 Cmd2 Cmd3 Prompt  
  # Read Commands from Commands1.txt file but ignore comment lines  
  [[ "$Cmd1" =~ ^#.*$ ]] && continue  
  do  
  .  
  .  
  done < Commands1.txt  
done < Hostnames.txt  

更奇怪:如果我在echo $HOST行之后放置一行[[ "$HOST" =~ ^#.*$ ]] && continue,它会按要求工作,但当然它会回显不需要的屏幕输出。

命令文件内容:

#Juniper commands  
set cli screen-length 0,show version,exit,>

主机名文件内容

ABCD1234

1 个答案:

答案 0 :(得分:0)

总结评论,do陈述错误的地方;他们应该在while陈述之后立即来。