2017-10-17 43 views
0
awk 'BEGIN { FS = ","} ; { "puppet node purge " $0 } ' < input.txt 

我試圖在命令puppet節點清除運行後,它從輸入文件中拉出我的服務器,但是當它在腳本中運行時,它會完全跳過。我的想法是它讀取puppet節點清除好,但不執行它。在傀儡shell腳本中存在問題

awk 'BEGIN { FS = ","} ; { print "puppet node purge " $0 } ' <input.txt>> output.txt 

當跑這樣它創建附加與木偶節點吹掃主機名的​​輸出文件。

它將在shell中執行的正確方法是讀取文本文件,添加purge命令並從那裏運行它的正確方法是什麼?

+0

你是否試圖在命令中使用'$ 0'在bash shell中執行''puppet node purge'''?看看'系統(「puppet node purge」$ 0)'如果我明白你在做什麼...... – dawg

+0

你爲什麼要設置'FS'但從不看任何單個字段? –

回答

-3

這應該爲您的使用情況下工作: for host in $(cat input.txt | tr ","); do puppet node purge $host ; done

+0

當我嘗試了你的建議我得到了tr:在''後丟失操作數, 翻譯時必須給出兩個字符串。 – athlonxl

1

當你想調用一個shell工具,沒有外殼調用AWK調用系統調用外殼打電話給你的工具。只是把它從外殼:

$ cat file 
stuff 
nonsense 
foo bar 

$ < file xargs -I {} -n 1 echo puppet node purge {} 
puppet node purge stuff 
puppet node purge nonsense 
puppet node purge foo bar 

獲得,當你喜歡它擺脫echo的。