0

Input.txt次のいくつかのdigコマンドを含むfile()があるとしましょう。

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 に答える
-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 に答える