LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: zly_0703

shell中的小括号()问题

[复制链接]
发表于 2009-2-28 21:16:23 | 显示全部楼层
Post by realasking;1954205
不过楼上能否举几个创建子shell但没有复制父shell的环境的例子?
上面不是已经举过了么?
知道$$这个shell参数么?扩展为当前shell的进程号。它是shell环境的一部分,但是不会被子进程继承(怎么可能继承?子进程也是进程,也有自己的进程号!)不过如果子shell中该值没有改变,只有一种解释:子shell复制了父shell的环境。
  1. $ echo $$
  2. 2500
  3. $ (echo $$)
  4. 2500
  5. $ echo $(echo $$)
  6. 2500
  7. $
复制代码
为什么都是2500?

接着再来:
  1. $ bash -c 'echo $$'
  2. 2530
  3. $ bash
  4. $ echo $$
  5. 2531
  6. $ exit
  7. $ echo 'echo $$' | bash
  8. 2541
  9. $ cat > script.sh
  10. echo $$
  11. $ bash script.sh
  12. 2545
  13. $
复制代码
为什么又不一样了?
回复 支持 反对

使用道具 举报

发表于 2009-2-28 22:40:36 | 显示全部楼层
哦,大致有点明白你的意思了,
谢谢你。
回复 支持 反对

使用道具 举报

发表于 2009-3-2 20:21:19 | 显示全部楼层
Post by Jockey;1953478

...
asynchronous commands,异步命令,这个我貌似还没遭遇过... XD


小弟斗胆试言:
异步命令就是在命令后边加“&”号的命令。

  1. a=tester
  2. echo $a                   #当前Shell里可以看到当前Shell里的变量。
  3. echo $a &                #在异步命令里,子Shell可以看到父Shell里的变量(Shell确实启动了一个新进程)。
  4. a=newOne && echo $a &     #在异步命令的子Shell里,对a赋新值。
  5. echo $a                   #在刚才命令里对a的改变不会影响当前Shell。
复制代码
回复 支持 反对

使用道具 举报

发表于 2009-3-3 11:00:34 | 显示全部楼层
恩,我以为异步命令又是什么高深的东西咧... XD
回复 支持 反对

使用道具 举报

发表于 2009-3-9 15:59:54 | 显示全部楼层
$var=hello      #var被定义成环境变量
$(echo $var)   #子进程继承环境变量
回复 支持 反对

使用道具 举报

发表于 2009-3-9 16:16:59 | 显示全部楼层
Post by linuxkinger;1958318
$var=hello      #var被定义成环境变量
$(echo $var)   #子进程继承环境变量


囧TZ...
回复 支持 反对

使用道具 举报

发表于 2009-3-12 16:13:59 | 显示全部楼层
用export导出的叫环境变量,是shell提供给其他程序用的,即在其他可执行程序里可以访问的全局变量

而shell和子shell之间,父shell的变量子shell可以访问,反之不行。
同时子shell export出来的环境变量在父shell中无效
回复 支持 反对

使用道具 举报

发表于 2009-3-12 16:27:37 | 显示全部楼层
Post by kkzhou;1959937
而shell和子shell之间,父shell的变量子shell可以访问,反之不行。

错误。:flash:
回复 支持 反对

使用道具 举报

发表于 2009-3-13 09:53:17 | 显示全部楼层
Post by Jockey;1959942
错误。:flash:


你前面举的例子$$是shell预定义变量,所有shell进程都有
我的意思是子shell自己用赋值、set来定义的变量的值父shell不能访问,需要借助管道、文件之类的手段
回复 支持 反对

使用道具 举报

发表于 2009-3-13 11:05:27 | 显示全部楼层
你应该说明白“环境变量”,虽然你那帖子里第一句话说了,但是...后面不说我还是会误会... XD
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表