当前位置: 技术问答>linux和unix
管道符号|命令在uninx和linux下边有什么区别吗?
来源: 互联网 发布时间:2016-08-02
本文导语: echo "fresh_time=5" | read fresh_time echo $fresh_time 上边两条命令,我在uninx下边执行,可以得到显示结果为:fresh_time=5 但是在linux下边什么都没有,这是为什么了? | 管道的每个命令都是在各自的...
echo "fresh_time=5" | read fresh_time
echo $fresh_time
上边两条命令,我在uninx下边执行,可以得到显示结果为:fresh_time=5
但是在linux下边什么都没有,这是为什么了?
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
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
fresh_time=$(echo "fresh_time=5");echo $fresh_time