0

假设我有一个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

我不确定,这是如何执行的,我收到以下消息,因为找不到命令。

有什么建议可以解决这个问题吗?

4

3 回答 3

2

尝试:

. Input.txt

一个点后跟一个空格和文件名将执行文件中的每一行。

您的for循环不起作用,因为它按单词而不是按行拆分输入。例如,它正在尝试执行命令google.com,因此出现“找不到命令”消息。

于 2015-10-22T18:22:23.873 回答
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
于 2015-10-22T18:19:58.853 回答
-2

您正在寻找eval关键字。因此,以您的一般示例为例:

cat Input.txt | while read i;do eval $i;done

就个人而言,我倾向于建议执行此特定操作的更好方法是拥有您的域列表,并执行以下操作:

xargs -n 1 -a /file/with/domains dig NS

根据您的数据源,xargs 解决方案可能比仅运行文件中的任何命令要安全得多。但这显然取决于您的真实数据文件中的内容。

于 2015-10-22T18:28:43.823 回答