shell编程的问题,关于read的

kingstarer 2008-04-30 06:48:13
echo hello | read var
echo $var

为什么显示结果是空白,不是hello ?

我在两台机上进行试验,一台输出正常,另一台输出空白

不知道是怎么回事,有高手能指点一下吗?
...全文
269 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Terry0128 2009-12-29
  • 打赏
  • 举报
回复
学习
kingstarer 2008-05-11
  • 打赏
  • 举报
回复
问题解决了,换了种方法实现
var = `echo hello`
qm_ch 2008-05-05
  • 打赏
  • 举报
回复
是不是这样,read是内部命令,运行时不会启动新的进程,而echo是外部命令,运行时会启动一个新的shell子进程来执行
lin_style 2008-05-05
  • 打赏
  • 举报
回复
学习
fuqd273 2008-05-05
  • 打赏
  • 举报
回复
跟5楼6楼学了一手。
kingstarer 2008-05-05
  • 打赏
  • 举报
回复
哦 谢谢回答

不过我要做的是修改环境变量里面的var

要怎么做好啊?

想达到的效果是将var赋值为echo或者其它更复杂命令的输出
mymtom 2008-05-04
  • 打赏
  • 举报
回复
从命令行输入的命令通常是在不同的shell中执行的. read var和echo $var在不同的shell中执行,
而不同shell中的变量是各自独立的.
如果放入同一个文件中(test.sh)中read var和echo $var就是用的同一个变量了.

如果要在命令行使用可以用:
echo hello | (read var; echo $var)
这样read var和echo $var就在同一个shell中执行了.
kingstarer 2008-05-03
  • 打赏
  • 举报
回复
发现一个奇怪的现象,如果把read放到文件里面就会正常


test.sh
-------------------------
#!/bin/bash
read var
echo $var

执行echo hello | sh test.sh

结果显示就正常了
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
接分是王道!
kingstarer 2008-05-01
  • 打赏
  • 举报
回复
奇怪了 为什么我在“我发布的帖子”里面看到这贴有人回了 但是现在却看不见 为什么?
kingstarer 2008-04-30
  • 打赏
  • 举报
回复
up 让更多高手看到

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧