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