我以前读过(不记得来源了):
./script --param="value"
与以下情况相比可能会有不同的结果:
./script "--param=value"
并且由于这些差异(在切换系统/操作系统/发行版/shell 时可能会变得明显),您应该始终这样做--param="value"
。也就是说,执行我所说的“后期引用”(将引号放在尾部或最小子集周围;不要引用整个内容)。
我也见过有人在修改变量时这样做(即PATH=/bar:"$PATH"
,与 相比PATH="/bar:$PATH"
)。总的来说,从我看到其他人的做法来看,“后期引用”比引用整个内容更常见。
--param="value"
我的问题是:和之间真的有潜在差异吗"--param=value"
?如果我需要引用某些内容,引用其中的一部分和引用整个内容之间真的有区别吗?
我倾向于这样做--param="value"
而不是"--param=value"
,但我这样做主要是因为我认为它更容易在心理上解析,而不是因为我知道任何技术差异。
答案1
至少在您提到的特定情况下没有区别。shell 将删除字符"
,最终结果相同。为了调试 shell 引用问题,我有时会使用一个简单的程序,只打印出它的 argv。例如,
$ printargs --param="value"
argv[0] = printargs
argv[1] = --param=value
$ printargs "--param=value"
argv[0] = printargs
argv[1] = --param=value
以下是代码,供参考:
#include <stdio.h>
int main(int argc, char** argv)
{
int i;
for (i = 0; i < argc; ++i) {
printf("argv[%d] = %s\n", i, argv[i]);
}
return 0;
}