分页: 1 / 1
while read line的循环中 read a 不起作用啊
发表于 : 2011-07-04 15:38
由 erol
while read line的循环中read 变量
完全不执行,不起作用啊
比如
文件b里有3行文本
代码: 全选
#!/bin/bash
cat "b" | while read line
do
read a
echo $a
done
只出现了一空行就结束了
像这样
大虾们是怎么解决这个问题的?用其它方式的逐行读取吗?
Re: while read line的循环中 read a 不起作用啊
发表于 : 2011-07-04 18:03
由 erol
代码: 全选
n=`cat $cmdfile` | wc -l`
for ((a=1; a <=n ; a++))
do
eval `cat $cmdfile | head -n $a | tail -n 1`
done
虽然拿这个可以替代,但是我上面那样为什么不行啊
Re: while read line的循环中 read a 不起作用啊
发表于 : 2011-07-04 18:05
由 sk1418
你想要这个效果?
代码: 全选
#!/bin/bash
cat "b" | while read yourLine
do
echo $yourLine
done
Re: while read line的循环中 read a 不起作用啊
发表于 : 2011-07-04 19:18
由 sk1418
哦,刚才我发的时候,没看到你的第2帖。刚才弄错了,现在知道你要什么了。
一般有两个办法。
1,用for,别用read循环读,在for里用read接收键盘
代码: 全选
for foo in `cat b`
do
echo -n "input something related to $foo:"; read bar
echo $bar
done
2, 非要用while read
代码: 全选
while read yourLine
do
echo "line:"$yourLine":"
read a < /dev/tty
echo "a:"$a
done <b
Re: while read line的循环中 read a 不起作用啊
发表于 : 2011-07-05 6:59
由 fnan
erol 写了:while read line的循环中read 变量
完全不执行,不起作用啊
比如
文件b里有3行文本
代码: 全选
#!/bin/bash
cat "b" | while read line
do
read a
echo $a
done
只出现了一空行就结束了
像这样
大虾们是怎么解决这个问题的?用其它方式的逐行读取吗?
管道后面的read接受数据流输入,不是接受标准输入,按你想像的工作就见鬼了。
想要这效果?
kose5@kose5-Aspire-4552:~$ cat b
echo "名字?"
read name
echo "你好,$name。"
kose5@kose5-Aspire-4552:~$ eval "$(cat b)"
名字?
fnan
你好,fnan。
Re: while read line的循环中 read a 不起作用啊
发表于 : 2011-07-05 13:24
由 lexdene
file
xxxx
xxxx
shell
代码: 全选
#!/bin/bash
cat file | while read line
do
echo $line
done
输出结果:
xxxx
xxxx
Re: while read line的循环中 read a 不起作用啊
发表于 : 2011-07-05 22:55
由 fnan
不过不明白lz想执行每行的命令还是每一行读一次标准输入。
Re: while read line的循环中 read a 不起作用啊
发表于 : 2011-07-08 1:31
由 erol
fnan 写了:不过不明白lz想执行每行的命令还是每一行读一次标准输入。
谢谢各位给出的解决方案,事实上是想从一个文档里读行,按需要顺序读或者倒序读行,这一行文字是一个命令,命令里有我定义的一个函数,而函数里面有read命令
Re: while read line的循环中 read a 不起作用啊
发表于 : 2011-07-08 8:50
由 fnan
问题是函数里想read什么呢?