【求助】问一个关于{}与()的问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
ddvv
帖子: 8
注册时间: 2007-06-14 10:49

【求助】问一个关于{}与()的问题

#1

帖子 ddvv » 2010-04-08 12:41

{}与()的意义:

代码: 全选

(cmd1;cmd2;...;cmdN)#在一个子shell里执行一组命令 
{cmd1;cmd2;...;cmdN}# 在当前shell里执行一组命令 
测试脚本testshellpid

代码: 全选

!/bin/bash
echo $$
a=1
执行命令:

代码: 全选

$ echo $$;( ./testshellpid;echo $a; )
与
$ echo $$;{ ./testshellpid;echo $a; }
2条命令的输出

代码: 全选

6469  #当前shell的pid
xxxx   #脚本中的pid,不等于6469
[空]    #$a未定义
我的问题是,使用{}来执行的时候,为什么脚本中的pid与当前pid不同呢?另外,为什么使用{}或者()执行,$a都是未定义的,“./testshellpid;echo $a”不是在同一个shell中执行的吗?
头像
速腾1994
论坛版主
帖子: 17379
注册时间: 2008-11-01 20:43
系统: Arch+gnome

Re: 【求助】问一个关于{}与()的问题

#2

帖子 速腾1994 » 2010-04-08 13:25

不懂:oops: :oops: :oops:
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 【求助】问一个关于{}与()的问题

#3

帖子 BigSnake.NET » 2010-04-08 13:31

两个 ./testshellpid 都是 fork 出的子 shell
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
ddvv
帖子: 8
注册时间: 2007-06-14 10:49

Re: 【求助】问一个关于{}与()的问题

#4

帖子 ddvv » 2010-04-08 13:40

BigSnake.NET 写了:两个 ./testshellpid 都是 fork 出的子 shell
嗯,( ./testshellpid;echo $a; )中的testshellpid是不是应该叫做 子shell 中的 子shell ?
回复