2

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

while read line           
do           
    #touch < echo -e "$correctFilePathAndName"
    echo -e "$correctFilePathAndName"           
done < $file.txt
4

4 回答 4

8

如果您在输入文件的每一行中都有文件名,file.txt那么您不需要执行任何循环。你可以这样做:

touch $(<file.txt)

在一个单一的触摸命令中创建所有文件。

于 2013-08-07T20:26:53.340 回答
4

您需要提供文件名作为参数,而不是通过标准输入。您可以通过或 `...`使用命令替换:$(…)

while read line
do
    touch "$(echo -e "$correctFilePathAndName")"
done < $file.txt
于 2013-08-07T20:17:42.143 回答
3

嗯,失去回声部分......并使用正确的变量名。

while read line; do
    touch "$line"
done < $file.txt
于 2013-08-07T20:26:48.537 回答
1

尝试 :

echo -e "$correctFilePathAndName" | touch

编辑:对不起正确的管道是:

echo -e "$correctFilePathAndName" | xargs touch

'<' 通过标准输入重定向,而 touch 需要文件名作为参数。xargs 将标准输入转换为触摸参数。

于 2013-08-07T20:15:57.467 回答