![](/img/trans.png)
[英]how to print lines with specific column matching members of array in bash
[英]How to correctly print read lines in bash
嘗試遍歷純文本文件時,我的行為很奇怪:
#!/bin/bash
sed -n "5,5p" test.tmp
while read linea in
do
echo $linea
done < test.tmp
事情是,從第一個sed我得到了我期望的結果,但是從while循環中我沒有得到:
./test.sh
(5) Sorgo DICOTILEDONEAS 1,5-2 l/ha 15
(1)
(2)
(3)
(4)
(5)
(6)
我同時附上兩個文件,以幫助澄清此處發生的情況:
提前致謝
我會怎么做:
#!/bin/bash
while IFS= read -r linea; do
printf '%s\n' "$linea"
done < <(sed -n "5,5p" test.tmp)
< <( )
是進程替換,請檢查
http://mywiki.wooledge.org/ProcessSubstitution
http://wiki.bash-hackers.org/syntax/expansion/proc_subst
“雙引號”是每個包含空格/元字符和每個擴展名的文字: "$var"
, "$(command "$var")"
, "${array[@]}"
, "a & b"
。 使用'single quotes'
表示代碼或使用$'s: 'Costs $5 US'
, ssh host 'echo "$HOSTNAME"'
。 看到
http://mywiki.wooledge.org/語錄
http://mywiki.wooledge.org/參數
http://wiki.bash-hackers.org/syntax/words
我終於發現發生了什么事。 while語句中有一個額外的“ in”。 大概我混合了兩種不同的時間。
我在哪里:
而在讀取linea時做回聲$ linea done <test.tmp
它應顯示為:
在閱讀linea時; ##已刪除,且; 添加做回聲$ linea完成<test.tmp
再次感謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.