2017-10-17 32 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的。