我真的很困惑。我从两个单独的文件中读取了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
答案 0 :(得分:0)
总结评论,do
陈述错误的地方;他们应该在while
陈述之后立即来。