如何防止参数膨胀?做Bash 手册在某处提到这个?如果您能帮助我找到其中提到的位置,我将不胜感激。
例如,
$ b=1
$ echo $b
1
当 bash 解释器解释时echo $b
,参数扩展$b
发生在运行之前echo $b
。因此不需要创建b
shell 进程的环境变量,以便传递给子进程echo $b
。
为了进行比较,请考虑另一个例子https://unix.stackexchange.com/a/261406/674
$ b=1
$ c=$(b=2; echo $b)
$ echo $c
2
在原始 shell 中,当 bash 解释器解释 时c=$(b=2; echo $b)
,它不会$b
使用值进行扩展1
。
在命令替换的子 shell 中,当 bash 解释器解释 时b=2; echo $b
,它会$b
使用值 进行扩展2
。
是什么阻止了原始 shell 中的参数扩展$b
,而将参数扩展保留$b
到子 shell 中?
引号可以防止参数扩展,例如"$b"
.但这里参数扩展没有引号。命令替换是否会阻止其中的参数扩展?