LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1323|回复: 2

请教:关于bash shell中子进程变量

[复制链接]
发表于 2009-3-4 14:05:48 | 显示全部楼层 |阅读模式
$ cat 3.sh
#!/bin/bash
uu=aa
export uu

j=0
ls | while read line
  do
    Arr[j]=$line
    let j++
    uu=${j}
    echo "uu $uu"
  done
echo "uu: $uu"

$ ./3.sh
uu 1
uu 2
uu 3
uu 4
uu 5
uu 6
uu 7
uu 8
uu 9
uu 10
uu: aa

想请教象上面的例子,我想把|while里的变量的值保留下来,也就是说在while外面也能用,有什么办法呢?我试了上面的方法,在while前export uu 或者在while 里面export uu, 都不行呢。在while结束后,uu的值还是aa.
发表于 2009-3-4 16:59:06 | 显示全部楼层
export 只是把变量值export到当前shell,pipe会生成新的子shell,所以无法保留到后面,你可以:
files=`ls`
for line in $files;do

或者

while read line;do
....
done < <( ls )

ref: http://nion.modprobe.de/blog/arc ... -by-a-subshell.html
回复 支持 反对

使用道具 举报

发表于 2009-3-9 14:59:15 | 显示全部楼层
Post by ptfree;1956196
export 只是把变量值export到当前shell,pipe会生成新的子shell,所以无法保留到后面,你可以:
files=`ls`
for line in $files;do

或者

while read line;do
....
done < <( ls )

ref: http://nion.modprobe.de/blog/arc ... -by-a-subshell.html
赞一个:cool:
回复 支持 反对

使用道具 举报

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

本版积分规则

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