gpt4 book ai didi

Bash while循环逐行读取文件

转载 作者:行者123 更新时间:2023-11-29 08:50:20 24 4
gpt4 key购买 nike

我想在这里讨论两种逐行读取文件的方法:

#!/bin/bash    

while read line
do
echo-e "$ line \ n"
done <file.txt

#!/bin/bash    
exec 3<file.txt

while read line
do
echo-e "$ line \ n"
done

所以第一个版本工作正常,但我不明白 while 循环处理文件的机制。但是我了解第二个版本的机制。但是在这里我不明白为什么它会挂起并且不打印任何东西。

最佳答案

第一个循环有效是因为 done 之后的重定向适用于整个循环,所以 read 是从文件中读取的,而不是从标准输入中读取的脚本。

第二个版本挂起,因为 read 从文件描述符 0 读取,这是标准输入,而您没有在那里输入任何内容。 exec 行重定向文件描述符 3 以从文件中读取,但您并未从文件描述符 3 中读取。

您可以使用以下方法拯救第二个:

exec <file.txt

现在从命名文件中读取标准输入。

关于Bash while循环逐行读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8571502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com