Linux 从文本文件中读取文件名,然后生成这些文件?

Linux 从文本文件中读取文件名,然后生成这些文件?,linux,bash,unix,Linux,Bash,Unix,我的代码如下。Echo工作正常。但是,当我将echo的输出重定向到touch时,我得到一个错误“没有这样的文件或目录”。为什么?我怎么修理它? 如果我只复制粘贴echo的输出,则创建文件,但不使用touch while read line do #touch < echo -e "$correctFilePathAndName" echo -e "$correctFilePathAndName" done &

我的代码如下。Echo工作正常。但是,当我将echo的输出重定向到touch时,我得到一个错误“没有这样的文件或目录”。为什么?我怎么修理它? 如果我只复制粘贴echo的输出,则创建文件,但不使用touch

while read line           
do           
    #touch < echo -e "$correctFilePathAndName"
    echo -e "$correctFilePathAndName"           
done < $file.txt
读取行时
做
#触摸
试试:

echo -e "$correctFilePathAndName" | touch
编辑:抱歉,正确的管道是:

echo -e "$correctFilePathAndName" | xargs touch

“您需要提供文件名作为参数,而不是通过标准输入。您可以通过
$(…)
或“…”:

while read line
do
    touch "$(echo -e "$correctFilePathAndName")"
done < $file.txt
读取行时
做
触摸“$(echo-e“$correctFilePathAndName”)”
完成<$file.txt

Ehm,丢失回音部分。。。并使用正确的变量名

while read line; do
    touch "$line"
done < $file.txt
读行时
;做
触摸“$line”
完成<$file.txt

如果输入文件
file.txt的每一行中都有文件名,则无需执行任何循环。您只需执行以下操作:

touch $(<file.txt)

touch$(在哪里设置了
$correctFilePathAndName
呢?为什么不仅仅是
触摸$correctFilePathAndName
?但是为什么输入重定向在这里不起作用?不起作用。触摸:缺少文件操作数请尝试“触摸--help”以了解更多信息。很抱歉,请参见正确的编辑。触摸使用的参数不是stdin这真是一种疯狂的方式。让我们来看看c。)考虑到它的教育意义:)也许还有“-e”选项很重要…@user1146332-为什么这么说?我是新手,所以不知道哪种方法更好。为什么输入重定向在这里不起作用?我不熟悉unix bash脚本,但我不知道这些事情。@blast因为
touch
将文件作为参数,而不是通过标准输入。它就是这样设计的。@blasto另一个原因是重定向需要与文件交互,而不是与另一个命令交互。在您的示例中,
touch
查找名为
echo
的文件以用作
touch
程序的输入。行尾的额外内容被视为
touch
命令的一部分,因此您的示例是等效的ent至
touch-e“$variable”
.Touch通常不理解
-e
,如果shell没有先中止命令,因为它找不到
echo
,无法向
Touch
的标准输入提供信息,它会抱怨这一点……再次感谢anubhava。回答得很好,但请注意,这对于大型文件列表来说是失败的(超过$MAX_ARG_STRLEN