【发布时间】:2016-06-20 20:48:16
【问题描述】:
根据Google Shell Style Guide,我应该:
始终引用包含变量、命令替换、空格或 shell 元字符的字符串,除非需要小心的不带引号的扩展。
也许我误解了“命令替换”的含义,但我想知道在以下示例中是否需要使用引号:
VAR="$(echo foo bar)"
【问题讨论】:
-
在这种情况下您不需要引号。但如果不确定,请使用引号!
-
也许不是在那个简单的例子中,但保持一致肯定不会有坏处。但是如果
foo或bar是$foo和$bar,那么我们可能需要单独引用它们。 -
在那种特定的情况下,你不需要外引号,因为赋值会抑制字符串拆分和全局扩展。
-
顺便说一句,
VAR是错误的形式,除非处理名称由操作系统或 shell 定义的变量。见pubs.opengroup.org/onlinepubs/009695399/basedefs/…第四段,记住环境变量和shell变量共享一个命名空间