Shell逐行读取文件

时间:2015-10-22 18:14:21

标签: bash shell dig

让我说我有一个文件(?),后面有一些挖掘命令。

Input.txt

我想只从文件中执行dig命令,必须逐行读取。

目前我尝试使用

dig NS google.com
dig NS box.com
dig NS dropbox.com
dig NS cnn.com
dig NS bbc.co.uk

我不确定,如何执行此操作,并且在找不到命令时收到以下消息。

有关解决此问题的任何建议吗?

3 个答案:

答案 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解决方案可能比运行文件中的任何命令更安全。但这显然取决于您的真实数据文件中的内容。