这段话是啥意思?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
5451vs5451
帖子: 345
注册时间: 2006-07-14 18:56
来自: Apple Valley, Planet Tux, Linux System
送出感谢: 0
接收感谢: 0

这段话是啥意思?

#1

帖子 5451vs5451 » 2006-08-16 13:56

42 # 一般来说
43 (
44 : | x=x
45 # 看上去是启动了一个子shell
46 : | ( x=x )
47 # 但
48 x=x < <(:)
49 # 实际上不是
50 )

原文http://www.linuxsir.org/main/doc/abs/ab ... s-sub.html
头像
laborer
帖子: 1016
注册时间: 2005-10-25 11:15
送出感谢: 0
接收感谢: 1 次
联系:

Re: 这段话是啥意思?

#2

帖子 laborer » 2006-08-16 22:38

5451vs5451 写了:42 # 一般来说
43 (
44 : | x=x
45 # 看上去是启动了一个子shell
46 : | ( x=x )
47 # 但
48 x=x < <(:)
49 # 实际上不是
50 )

原文http://www.linuxsir.org/main/doc/abs/ab ... s-sub.html
看了一下上下文,本身这个例子什么都没做,只是演示一下用管道和process substitution的细微差别

这里“:”是bash的一个buildin命令,功能和true是一样的,直接return 0。执行

代码: 全选

true | x=asdfasdf
之后,echo $x,可以看到x并没有被赋值,也就是说x=asdfasdf是在一个子shell中执行的,并不会影响父shell中变量x。也就是说这句话和

代码: 全选

true | ( x=asdfasdf )
是等同的。但用process substitution就不一样了,执行

代码: 全选

x=asdfasdf < <(true)
之后,显示x就变成了“asdfasdf”。
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
头像
5451vs5451
帖子: 345
注册时间: 2006-07-14 18:56
来自: Apple Valley, Planet Tux, Linux System
送出感谢: 0
接收感谢: 0

#3

帖子 5451vs5451 » 2006-08-16 23:23

原来是这个意思。谢谢laborer

process substitution翻成中文怎么说?进程替换?
回复

回到 “Shell脚本”