linux - 为什么`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,发生了什么?
解决方案
试试这个,你会发现它有效。
sh -c 'export a=2&&echo $a'
当用双引号括起来时,$a
在调用sh
.
推荐阅读
- javascript - 关于 ajax 调用的异步性
- wordpress - Wordpress-ob_start():创建缓冲区失败
- javafx - JavaFX8 构建以在 Raspberry Pi 上运行 Web 模块
- ruby - 有没有办法为 kubernetes 中的 sessionAffinity 提供除 ClientIP 之外的自定义值?
- quarkus - Quarkus / Smallrye 反应式消息传递 - 消息重新传递
- php - 在while循环中使用fetch_object()没有得到预期的结果
- php - 两个日期范围返回
- c# - 没有参数的 Excel DNA 函数在 Excel 函数向导中仍然显示一个参数
- python - “squeezenet1.1.caffemodel”不是现有文件
- mysql - 从 wordpress 数据库中删除字符串