ubuntu 中的 While 循环在几次迭代后崩溃

While loop in ubuntu crash after few iteration

我有一个包含 1000 行的文件,如下所示

978_Ad2_01000.fnc 979_Ad2_01001.fnc 97_Ad2_00098.fnc 981_Ad2_01003.fnc 982_Ad2_01004.fnc 983_Ad2_01005.fnc 984_Ad2_01006.fnc 985_Ad2_01007.fnc 986_Ad2_01008.fnc 988_Ad2_01010.fnc 98_Ad2_00099.fnc

我想创建与文件中的行数一样多的文件夹。 我写了这个小循环:

#! /bin/bash

while IFS= read -r line
do
    mkdir "$line"
done < ~/Desktop/*.txt

我想为目录中存在的多个 .txt 文件重复此命令。这就是我解析

的原因
 < ~/Desktop/*.txt.

问题是它只读取和创建了几 (5) 个文件夹,然后就停止了。 我敢肯定这是一件很微不足道的事情,但我真的不明白。

您不能使用 < 从多个文件重定向。相反,您可以使用

cat ~/Desktop/*.txt | while IFS= read -r line; do
  mkdir "$line"
done

或者干脆

cat ~/Desktop/*.txt | xargs -d '\n' mkdir

cat 将连接给定的文件并将它们写入其标准输出,以便您拥有一个文件描述符,可以从中读取所有文件的内容,并且可以将其用作端点到循环(或 xargs')标准输入的管道。