逐行读取文件,并在bash中对每个文件执行操作

逐行读取文件,并在bash中对每个文件执行操作,bash,shell,Bash,Shell,我有一个文本文件,每行包含一个单词 我需要bash中的一个循环来读取每一行,然后在每次读取一行时执行一个命令,使用该行的输入作为命令的一部分 我只是不确定在bash中使用正确的语法来实现这一点。如果有人能帮忙,那就太好了。我需要使用从测试文件中获得的行作为参数来调用另一个函数。当文本文件中没有更多行时,循环应该停止 Psuedo代码: Read testfile.txt. For each in testfile.txt { some_function linefromtestfile } 那

我有一个文本文件,每行包含一个单词

我需要bash中的一个循环来读取每一行,然后在每次读取一行时执行一个命令,使用该行的输入作为命令的一部分

我只是不确定在bash中使用正确的语法来实现这一点。如果有人能帮忙,那就太好了。我需要使用从测试文件中获得的行作为参数来调用另一个函数。当文本文件中没有更多行时,循环应该停止

Psuedo代码:

Read testfile.txt.
For each in testfile.txt
{
some_function linefromtestfile
}
那么:

while read line
do
   echo $line
   // or some_function "$line"
done < testfile.txt
读取行时
做
回音$线
//或某些函数“$line”
完成
另一种方法是使用文件描述符(本例中为4):

人们可能会在读台词的时候开始向你扔垃圾。


做
nikto-Tuning x1 6-h$line-Format html-o niktosubdomain scans.html
完成

在改变了cat方法后,尝试了自动扫描域列表。仍然只读取第一行,而忽略了其他所有内容。

除非您知道从标准输入读取的其他命令存在冲突,否则无需使用其他文件描述符。@chepner-正是因为如此,我才在上面添加了答案;beny23给出了一个完美的答案,我添加了一个替代方案。
file='testfile.txt'
exec 4<$file

while read -r -u4 t ; do
    echo "$t"
done
cat testfile.txt | while read -r line
do
   # do something with "$line" here
done
while read line
do
   nikto -Tuning x 1 6 -h $line -Format html -o NiktoSubdomainScans.html
done < testfile.txt