我真的很困惑。我從兩個單獨的文件中讀取了主機名和命令中的嵌套循環。在文件中我想放置「#」註釋行,這些行需要被主腳本忽略。在下面的腳本中,命令讀取正常,「#」註釋行被很好地忽略,但讀取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'語句剛纔顯示出來。 –