让我说我有一个文件(?
),后面有一些挖掘命令。
Input.txt
我想只从文件中执行dig命令,必须逐行读取。
目前我尝试使用
dig NS google.com
dig NS box.com
dig NS dropbox.com
dig NS cnn.com
dig NS bbc.co.uk
我不确定,如何执行此操作,并且在找不到命令时收到以下消息。
有关解决此问题的任何建议吗?
答案 0 :(得分:2)
尝试:
. Input.txt
后跟空格和文件名的点将执行文件中的每一行。
您的for
循环无法正常工作,因为它按字词而不是按行分割输入。因此,它试图执行命令google.com
,因此找不到"命令"消息。
答案 1 :(得分:0)
您可以创建.sh文件并放置重定向输出的命令,例如:
#!/bin/bash
dig NS google.com >> ~/google.log
dig NS box.com >> ~/box.log
dig NS dropbox.com
dig NS cnn.com
dig NS bbc.co.uk
答案 2 :(得分:-2)
您正在寻找eval
关键字。所以,用你的一般例子:
cat Input.txt | while read i;do eval $i;done
就个人而言,我倾向于建议做更具体事情的更好方法是获取域名列表,并执行以下操作:
xargs -n 1 -a /file/with/domains dig NS
根据您的数据源,xargs解决方案可能比运行文件中的任何命令更安全。但这显然取决于您的真实数据文件中的内容。