Chinaunix

标题: 请教关于read的 [打印本页]

作者: edwardhey    时间: 2008-09-05 11:29
标题: 请教关于read的
test:代码

  1. #!/bin/sh
  2. cat aa | read line
  3. echo $line
复制代码



aa : 代码
  1. dsfdsaf
复制代码





为什么无法从 cat file | read 变量的?
作者: prc    时间: 2008-09-05 11:43
因为管道开启了一个subshell,read line是在subshell里进行的
作者: blackold    时间: 2008-09-05 11:43
标题: 回复 #1 edwardhey 的帖子
用read line < file吧。
| read 不行的具体原因我也不清楚。


哦,搞清楚了。
|read var不是不可以读,但var变量属于子shell,所以在脚本的shell中看不到var.

试试:
echo "abc" |(read var;echo $var)

echo "abc"| read var
echo $var

[ 本帖最后由 blackold 于 2008-9-5 12:10 编辑 ]
作者: nhw_cs    时间: 2008-09-05 11:54
原帖由 edwardhey 于 2008-9-5 11:29 发表
test:代码

#!/bin/sh
cat aa | read line
echo $line


aa : 代码
dsfdsaf




为什么无法从 cat file | read 变量的?


fuck!  怎么不能?能!!!你的写法没问题!
作者: waker    时间: 2008-09-05 12:09
标题: 回复 #4 nhw_cs 的帖子
不同的shell对管道的处理是不一样的
作者: blackold    时间: 2008-09-05 12:13
原帖由 waker 于 2008-9-5 12:09 发表
不同的shell对管道的处理是不一样的

确实,有的shell中LZ可以echo到期望的结果。bash 不行。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2