我的代码如下。 Echo工作得很好。但是,当我将echo的输出重定向到touch时,我得到一个错误“没有这样的文件或目录”。为什么?我如何解决它 ? 如果我复制只粘贴echo的输出,则创建文件,但不创建触摸。
while read line
do
#touch < echo -e "$correctFilePathAndName"
echo -e "$correctFilePathAndName"
done < $file.txt
答案 0 :(得分:8)
如果输入文件file.txt
的每一行都有文件名,则不需要进行任何循环。你可以这样做:
touch $(<file.txt)
在一个触摸命令中创建所有文件。
答案 1 :(得分:4)
您需要提供文件名作为参数,而不是通过标准输入。您可以通过$(…)
或`...`:
while read line
do
touch "$(echo -e "$correctFilePathAndName")"
done < $file.txt
答案 2 :(得分:3)
嗯,丢失回声部分......并使用正确的变量名称。
while read line; do
touch "$line"
done < $file.txt
答案 3 :(得分:1)
尝试:
echo -e "$correctFilePathAndName" | touch
编辑:抱歉正确的管道是:
echo -e "$correctFilePathAndName" | xargs touch
'&lt;'通过stdin重定向,而touch需要文件名作为参数。 xargs将stdin转换为触摸参数。