这两条线按预期工作:
$ env NEW=hello bash -c "env | grep hello"
NEW=hello
$ env NEW=hello bash -c "echo $PATH"
/bin:/usr/bin
但我不知道为什么以下内容不起作用(正如预期的那样)。
$ env NEW=hello bash -c "echo $NEW"
有什么建议吗?
$ env NEW=hello bash -c "echo $NEW"
您在参数上使用双引号来抨击此处,因此参数中的$NEW
由当前shell扩展,而不是由正在执行的bash
命令扩展。由于当前shell中未设置$NEW
,因此该命令将扩展为bash -c "echo "
。
在参数上使用单引号来解决此问题:
$ env NEW=hello bash -c 'echo $NEW'
hello