首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

管道符号|命令在uninx和linux上边有什么区别吗

2012-11-08 
管道符号|命令在uninx和linux下边有什么区别吗?echo fresh_time5 | read fresh_timeecho $fresh_time上

管道符号|命令在uninx和linux下边有什么区别吗?
echo "fresh_time=5" | read fresh_time
echo $fresh_time

上边两条命令,我在uninx下边执行,可以得到显示结果为:fresh_time=5
但是在linux下边什么都没有,这是为什么了?

[解决办法]
管道的每个命令都是在各自的子shell中运行的,
read fresh_time 这个命令只在它自己的子shell里有效,等到下面echo的时候就是另一个shell了,所以看不到fresh_time的值。

试试这个,把echo和read放到同一个shell里面
$ echo "fresh_time=5" | (read fresh_time; echo $fresh_time)
fresh_time=5

[解决办法]
这个不是管道的问题,应该说也不是UNIX或LINUX的问题,是不同SHELL的差别,有的SHELL支持这种传递,有的不支持而已,这样肯定没问题:

fresh_time=$(echo "fresh_time=5");echo $fresh_time

热点排行