我正在写一个非常简单的脚本,它将与我的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就是这样做的)