Bash脚本和文件名中的空格问题

4

我在 Mac OSX 上的 Bash 脚本中遇到了包含空格的文件名问题:

name="My File" #file name
version="1.0.0"

echo "Copying AAX..."
mkdir aax/
cp -R "/Library/Application Support/Avid/Audio/Plug-Ins/""${name}".aaxplugin aax

echo "Copying AU..."
mkdir au/
cp -R "~/Library/Audio/Plug-Ins/Components/""${name}".component au

echo "Copying VST2..."
mkdir vst/
cp -R "~/Library/Audio/Plug-Ins/VST/""${name}".vst vst

AAX文件可以正常运行,但AU和VST无法找到文件。我尝试过引用命令行的不同部分,但对于这两个文件始终会出现“没有这样的文件或目录”的错误提示。

可能出了什么问题呢?

谢谢!

1个回答

1

有两点需要注意:

  1. 波浪号(~)不会在引号中扩展;如果您想以这种方式使用它,请改用$HOME
  2. 如果要使用波浪线,则只应将${name}双引号括起来(以防止单词分割)。

因此,代码应该像这样(1):

"$HOME/Library/Audio/Plug-Ins/Components/${name}".component au

或者像这样 (2):
~/Library/Audio/Plug-Ins/Components/"${name}".component au

花括号和双引号不是多余的吗? - Httqm
@Httqm:它仍需要用双引号括起来;通常花括号用于更好的可读性。 - l'L'l
谢谢。我不知道波浪号在引用时不会扩展。现在它按预期工作了。 - Luca Capozzi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接