如何在bash脚本中使用包含带空格的文件名的变量?

时间:2011-07-27 17:42:21

标签: bash filenames spaces cp

我在OS X上运行了一个简单的bash脚本,它删除了特定的文件和目录,并在它们的位置复制了新的。一个Mac .app目录包含一个空格,当我运行脚本时,出现“没有这样的文件或目录”错误。

这是相关代码。已经削减了一个很好的数量,因此不可能对这些进行简单的硬编码(变量必须按原样分解):

CP="cp -Rf"

INSTALL_DIR="/Applications/"

APP="The App.app"

NEWAPP="$HOME/Downloads/The App.app"

$CP "$NEWAPP " "$INSTALL_DIR$NEWAPP"

我试图逃避The\ App.app没有运气,以及尝试单引号,双引号和双重转义,但没有任何效果。我想有一种简单的方法可以做到这一点。

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

你有一个额外的空间,它只是

“$ NEWAPP”

答案 1 :(得分:-1)

将整个最后一行括在引号中:

"$CP $NEWAPP $INSTALL_DIR$NEWAPP"

此处不必打开和关闭引号,$ CP必须包含在引号中,因为CP中有空格。