rm向变量添加额外的反斜杠



我正在写一个非常简单的脚本,它将与我的git存储库交互,但我已经到了一个地步,我不明白为什么会发生以下情况。

拥有:

destPath='~/Dropbox/Shared/Alex&Stuff'
destFile='file.zip'
#git archive --format zip --output $destFile master
echo $destPath/$destFile
rm $destPath/$destFile

回波输出正确路径:

~/Dropbox/Shared/Alex;填充物/文件.zip

但rm失败,出现以下情况:

rm: cannot remove ‘~/Dropbox/Shared/Alex\&Stuff/file.zip’: No such file or directory

那么,为什么在执行rm时要添加额外的反斜杠呢?Alex\$Stuff而不是Alex$Stuff

颚化符字符需要在引号外才能展开:

destPath=~/Dropbox/Shared/Alex&Stuff
destFile='file.zip'
#git archive --format zip --output $destFile master
echo "$destPath/$destFile"
rm "$destPath/$destFile"

尝试

destPath="$HOME/Dropbox/Shared/Alex&Stuff"

Tildas并不总是扩展到$HOME。和号不需要反斜杠,除非你想要一个真正的反斜杠。

至于双反斜杠,我猜rm就是这样引用其内部字符串的(即,反斜杠有特殊含义,单个反斜杠需要写成"\"——例如,C就是这样做的)

相关内容

  • 没有找到相关文章

最新更新