首页 > 解决方案 > 为什么`sh -c "export a=1&&echo $a"`什么都不返回?

问题描述

A) 首先我export a=1&&echo $a在 linux 终端中运行,我得到 1。

[root@ip-172-31-16-92 ec2-user]# export a=1&&echo $a
1

B) 但是当我跑步时 sh -c "export a=2&&echo $a",我仍然得到 1 而不是 2。

[root@ip-172-31-16-92 ec2-user]# sh -c "export a=2&&echo $a"
1

发生了什么事?如果sh -c "export a=2&&echo $a"自己是终端的子进程,应该有自己的环境,首先要复制他父亲的环境,所以a=1,但是执行的时候export a=2,环境a应该设置为2,然后echo $a应该是2 .但它返回1,发生了什么?

标签: linuxbashsh

解决方案


试试这个,你会发现它有效。

sh -c 'export a=2&&echo $a'

当用双引号括起来时,$a在调用sh.


推荐阅读