假设我有一个Input.txt
带有以下挖掘命令的文件()。
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 解决方案可能比仅运行文件中的任何命令要安全得多。但这显然取决于您的真实数据文件中的内容。