Shell逐行读取文件



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

相关内容

  • 没有找到相关文章

最新更新