我真的很困惑。我从两个单独的文件中读取了主机名和命令中的嵌套循环。在文件中我想放置“#”注释行,这些行需要被主脚本忽略。在下面的脚本中,命令读取正常,“#”注释行被很好地忽略,但读取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
我很惊讶它的工作;你不需要'while'循环吗?他们是否做出这一选择? –
输入文件中的'#'字符是否总是*像图案需要的线上的第一个字符?你有DOS风格的行结局(还是更糟,混合行结束)?也许尝试更多的东西,比如'while read ... done <
twalberg
对不起@Tom Zych'do'语句刚才显示出来。 –