用fd读取循环时嵌套



我正在尝试从嵌套环中的两个不同输入中读取而没有成功。我在这个问题上遵循了最佳答案,还查看了高级bash-scripting指南的文件描述符页面

我为测试问题而制作的示例脚本。

#!/bin/bash
while read line <&3 ; do
    echo $line
    while read _line <&4 ; do
        echo $_line
    done 4< "sample-2.txt"
done 3< "sample-1.txt"

样本1.txt

的内容
Foo
Foo

样本2.txt

的内容
Bar
Bar

预期输出

Foo
Bar
Bar
Foo
Bar
Bar

输出我得到

Foo
Bar

您的文本文件不会以newlines结尾:

$ printf 'FoonFoo' > sample-1.txt
$ printf 'BarnBar' > sample-2.txt
$ bash tmp.sh
Foo
Bar
$ printf 'n' >> sample-1.txt
$ printf 'n' >> sample-2.txt
$ bash tmp.sh
Foo
Bar
Bar
Foo
Bar
Bar

read如果在没有看到newline字符的情况下到达文件的末尾,则具有非零退出状态。有一个可解决的问题,但是最好确保您的文本文件正确以newline字符结束。

# While either read is successful or line is set anyway
while read line <&3 || [[ $line ]]; do

相关内容

  • 没有找到相关文章

最新更新