簡體   English   中英

在bash中逐行讀取文件

[英]Reading a file line-by-line in bash

嘗試逐行讀取文件,但無法正常工作,嘗試了許多不同的方法,包括以下方法:

$ cat test.sh
#!/bin/bash

echo 'line1
line2
line3
line4
;;' > list.txt

IFS=$'\n'

for line in "$(cat list.txt)"
do
   echo "line=$line"
   echo "----"
done

當我跑步時:

$ ./test.sh
line=line1
line2
line3
line4
;;
----

因為您已經在命令替換$()周圍使用了引號,所以Shell不會在換行符( IFS=$'\\n' )(和路徑名擴展)上執行單詞拆分,因此文件的全部內容將被視為一個字符串(第一line有它),而不是用換行符分隔的字符串進行迭代。

您需要刪除引號:

for line in $(cat list.txt)

盡管不建議使用for - cat combo遍歷文件的各行 ,但應使用while - read代替:

while IFS= read -r line; do ...;  done <list.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM