首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在bash脚本中复制文件

在bash脚本中复制文件
EN

Stack Overflow用户
提问于 2014-07-25 18:55:15
回答 3查看 292关注 0票数 1

我有一个bash脚本,它可以查看文件夹并将文件从一个文件夹复制到另一个文件夹。脚本是足够大的,但是这里只有两行代码:

代码语言:javascript
运行
复制
echo cp $working_directory/$folder_name/$f $new_filename
# cp $working_directory/$folder_name/$f $new_filename

以下是echo命令的输出:

代码语言:javascript
运行
复制
cp ~/MEGAsync/development/experiments/bash_renamer/tres/a.pdf ~/MEGAsync/development/experiments/bash_renamer/tres_1.pdf
cp ~/MEGAsync/development/experiments/bash_renamer/tres/b.pdf ~/MEGAsync/development/experiments/bash_renamer/tres_2.pdf

我可以启动任何一个命令,它在终端上运行良好。

但是,如果我取消注释真正的copy命令并启动脚本,我就会得到错误:

代码语言:javascript
运行
复制
cp ~/MEGAsync/development/experiments/bash_renamer/tres/a.pdf ~/MEGAsync/development/experiments/bash_renamer/tres_1.pdf
cp: ~/MEGAsync/development/experiments/bash_renamer/tres/a.pdf: No such file or directory
cp ~/MEGAsync/development/experiments/bash_renamer/tres/b.pdf ~/MEGAsync/development/experiments/bash_renamer/tres_2.pdf
cp: ~/MEGAsync/development/experiments/bash_renamer/tres/b.pdf: No such file or directory

为什么我有这个错误,以及如何修复它?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-25 18:59:43

我认为问题在于~标志。如果回送按原样打印,就意味着它在工作dir中查找名称为~的目录。您可以将~替换为$HOME,也可以尝试以不同的方式执行命令。

票数 3
EN

Stack Overflow用户

发布于 2014-07-25 19:17:02

这是不起作用的,因为很可能在$working_directory变量定义中引用了tilde ~,因此bash中的tilde扩展不起作用。

Tilde Expansion 如果一个单词以未引号的字符(‘~’)开头,则直到第一个未引号斜杠为止的所有字符(或所有字符,如果没有引号斜杠)都被视为倾斜前缀。如果不引用倾斜前缀中的任何字符,则可以将倾斜前缀后面的字符视为可能的登录名。 ~ $HOME ~/foo $HOME/foo的值

票数 2
EN

Stack Overflow用户

发布于 2014-07-25 19:01:17

它看起来是变量的一部分的倾斜~没有被扩展。也许先试一下?:

代码语言:javascript
运行
复制
eval working_directory=$working_directory
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24962672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档