Bash shell脚本。变量作为参数。没有报价vs双引号

时间:2016-12-26 02:19:30

标签: linux bash shell sh

我有两个不同的命令:

rm -rf $MY_DIR
rm -rf "$MY_DIR"

他们之间有什么区别?我应该使用哪种?

1 个答案:

答案 0 :(得分:2)

Shell变量是逐字扩展的,因此您应该使用quoted选项。假设您的$ HOME变量等于/Users/rocket spacer。在这种情况下,运行rm -rf /Users/rocket spacerrm -rf "/Users/rocket spacer"之间会有所不同。第一个尝试删除当前目录中的两个内容:/Users/rocketspacer。第二个选项可以执行您想要的操作,并删除目录/Users/rocket spacer。通常,在展开表示路径的shell变量时,您应该将其包装在引号中,这样您就不必担心会出现任何错误解释的可能性。