bash中一次性给多个变量赋值--命名管道的使用

多次碰到需要一次性给多个变量赋值的问题,经搜索发现一种比较方便的方法——命名管道

命名管道介绍:http://www.linuxjournal.com/article/2156?page=0,0

例子:现有字符串“a b c d”需要分别赋值给变量k1 k2 k3 k4,使用命名管道方法如下:

$ mkfifo npipe

$ (echo "a b c d" > npipe)&

$ read k1 k2 k3 k4 < npipe

此时k1 k2 k3 k4已经分别赋值成a b c d

 

注意:不能用‘|’ 直接给read变量,因为echo "a b c d" | read k1 k2 k3 k4 时,read在子shell中执行,执行结果不能影响父shell。

网上有讨论:http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=356028

 

posted @ 2012-06-02 11:02  油炸西瓜  阅读(2748)  评论(0编辑  收藏  举报