假设我有一个文件(Input.txt
),其中包含以下一些dig命令。
dig NS google.com
dig NS box.com
dig NS dropbox.com
dig NS cnn.com
dig NS bbc.co.uk
我只想从文件中执行dig命令,并且必须逐行读取。
当前我尝试使用
for i in $(cat Input.txt);do $i;done
我不确定,这是如何执行的,我得到以下消息为未找到命令。
有什么建议吗?
尝试:
. Input.txt
一个点后面加空格和文件名将执行文件中的每一行。
你的for
循环不工作,因为它是按字分割输入,而不是按行。因此,它试图执行命令google.com
,例如,因此"命令未找到"消息。
您可以创建一个.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
您正在寻找eval
关键字。那么,对于一般的例子:
cat Input.txt | while read i;do eval $i;done
就我个人而言,我倾向于建议更好的方法来做这个特定的事情是有你的域名列表,并做一些像:
xargs -n 1 -a /file/with/domains dig NS
根据您的数据源,xargs解决方案可能比仅仅运行文件中的任何命令要安全得多。但这显然取决于实际数据文件中的内容