gpt4 book ai didi

Bash shell 脚本语法问题 : Target is not a directory?

转载 作者:行者123 更新时间:2023-11-29 09:37:05 24 4
gpt4 key购买 nike

我正在尝试将文件复制到目录中存在的一堆文件夹中。这些文件夹已保存在 propagation.txt 中,如下所示:

sfproject/folder1
sfproject/folder2

我尝试运行的代码是:

for x in `cat propagation.txt`
do cp php.ini $x ; echo "Copied php.ini to $x"
done
echo "Finished";

但是,它指出:

cp : 'target: 'propagation.txt' is not a text'

这是 propagation.txt 的组成部分:

sfproject/apps/backend/modules/users/lib
sfproject/apps/backend/templates
sfproject/apps/frontend/config
sfproject/apps/frontend/lib
sfproject/apps/frontend/modules/EdboostSatGuide/actions
sfproject/apps/frontend/modules/EdboostSatGuide/templates
sfproject/apps/frontend/modules/dashboard/actions
sfproject/apps/frontend/modules/dashboard/templates
sfproject/apps/frontend/modules/quizzes/actions
sfproject/apps/frontend/modules/quizzes/templates
sfproject/apps/frontend/templates
sfproject/cache/frontend/prod/config

最佳答案

“目标不是目录”是一个 cp 错误。当您有三个或更多参数时,就会发生这种情况,而最后一个参数是一个现有的文件系统对象,而不是目录!

当然

cp a b

如果 b 是常规文件而不是目录,则有效。 b 被简单地替换为 a。但是

cp a b c

表示在目录 c 中复制 ab

不清楚这个问题是如何在你的 cp php.ini $x 中发生的,因为循环变量 $x 正在迭代 的结果cat ... 进程替换。进程替换进行分词,分词后的分片逐一赋值给x。为了使您的 cp 以三个或更多参数结束,$x 必须以某种方式扩展为两个参数。

发布失败的实际逐字代码和一些示例数据。

相关说明,如果某些路径名中确实有空格,最好将它们放在 propagation.txt 中的不同行,然后像这样处理:

# read dir names one by one and copy php.ini into them ...
while read dir ; do
cp php.ini "$dir"
# ...
done < propagation.txt # ... getting the names from propagation.txt

关于Bash shell 脚本语法问题 : Target is not a directory?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9812623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com