首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何正确打印bash中的读行

如何正确打印bash中的读行
EN

Stack Overflow用户
提问于 2015-01-13 17:19:09
回答 2查看 62关注 0票数 0

当我试图迭代一个纯文本文件时,我有一种奇怪的行为:

代码语言:javascript
运行
复制
#!/bin/bash
sed -n "5,5p" test.tmp
while read linea in
do 
    echo $linea
done < test.tmp

问题是,从第一个sed,我得到了我所期望的,但是从while循环中,我没有:

代码语言:javascript
运行
复制
./test.sh 
 (5) Sorgo                                              DICOTILEDONEAS                               1,5-2 l/ha          15
(1)
(2)
(3)
(4)
(5)
(6)

我附上这两个文件是为了帮助澄清这里正在发生的事情:

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-16 14:58:45

我终于找到了发生了什么。在while语句中有一个额外的"in“。可能我混合了两种不同的时间。

我拥有的地方:

同时在do回波$linea中读线做< test.tmp

它应改为:

当阅读线;##在删除和添加 do回声$linea完成< test.tmp

再次感谢

票数 0
EN

Stack Overflow用户

发布于 2015-01-13 17:23:25

我要做的是:

代码语言:javascript
运行
复制
#!/bin/bash

while IFS= read -r linea; do 
    printf '%s\n' "$linea"
done < <(sed -n "5,5p" test.tmp)

< <( )是进程替换,请检查

http://mywiki.wooledge.org/ProcessSubstitution

subst

“双引号”每一个包含空格/元字符和每个扩展的文字:"$var""$(command "$var")""${array[@]}""a & b"。将'single quotes'用于代码或文字$'s: 'Costs $5 US'ssh host 'echo "$HOSTNAME"'。看见

http://mywiki.wooledge.org/Quotes

http://mywiki.wooledge.org/Arguments

http://wiki.bash-hackers.org/syntax/words

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27927813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档