从文件里给参数赋值问题(已解决,蛋碎了)

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

从文件里给参数赋值问题(已解决,蛋碎了)

#1

帖子 枫叶饭团 » 2011-12-10 12:57

我想从文件里给两个参数赋值

代码: 全选

while read x y;do echo $x $y ;done < file
结果是可以显示出$x,$y.
但是如果再运行echo $x $y就为空了...但是我要的效果就是在while外也能使用xy的值...
头像
sunfish
帖子: 989
注册时间: 2008-05-03 1:53

Re: 从文件里给参数赋值问题

#2

帖子 sunfish » 2011-12-10 13:18

while循环是直到read x y命令不成功才退出的,所以整个循环结束后xy的值是read读取不成功的值即空了
docker && kubernetes
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: 从文件里给参数赋值问题

#3

帖子 枫叶饭团 » 2011-12-10 14:05

pocoyo 写了:

代码: 全选

read x y < file
一行一个值
不行哦,这样子只有一个值
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: 从文件里给参数赋值问题

#4

帖子 枫叶饭团 » 2011-12-10 14:06

自己解决了,因为cat、管道等命令都会开子进程所以就成了局部变量...
用重定向就能防止开进程....
头像
ChenFengyuan
帖子: 770
注册时间: 2008-03-23 0:39

Re: 从文件里给参数赋值问题

#5

帖子 ChenFengyuan » 2011-12-11 20:55

枫叶饭团 写了:自己解决了,因为cat、管道等命令都会开子进程所以就成了局部变量...
用重定向就能防止开进程....
原来如此,以前也有这个疑问
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 从文件里给参数赋值问题(已解决,蛋碎了)

#6

帖子 eexpress » 2011-12-11 20:59

ChenFengyuan, 你居然不推广perl。
● 鸣学
回复