【发布时间】:2014-07-26 03:43:02
【问题描述】:
我有一个 bash 脚本,它查看文件夹并将文件从一个文件夹复制到另一个文件夹。 脚本足够大,但这里只有两行:
echo cp $working_directory/$folder_name/$f $new_filename
# cp $working_directory/$folder_name/$f $new_filename
这里是 echo 命令的输出:
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
我可以启动任何此命令,并且它在终端中运行良好。
但是如果我取消注释真正的复制命令并启动脚本我会得到错误:
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
为什么会出现这个错误,我该如何解决?
【问题讨论】:
-
尝试用
"$HOME"替换~ -
在这种情况下一切正常。但为什么它不适用于 '~' ?
-
很可能是因为您引用了
~,并且波浪号扩展不会出现在引号中。如果你做了working_directory=~/或只是~/$folder_name/$f它应该可以工作。此外,与问题无关,但您确实应该引用您的变量以防止将来出现分词问题。 -
bash 解释 ~ 符号的方式。在我经常使用它的 c shell 中应该可以正常工作。
标签: bash