2009-12-11 49 views
1

我正在解析Bash中的一些.html文件。我讀了輸入:在Bash中逐行讀文件展開特殊字符

while read line 
do 
    echo $line 
    ...do something... 
done < $file 

現在我已經expreerenced真正的奇怪。在文件中的某些行包含類似

Resolution…: 720 * 576 

但慶典給了我這樣的:

Resolution…: 720 mysript.sh another_script.pl 576 

猛砸擴展* char實際目錄的內容。我如何一行一行地閱讀文本而不展開。

回答

8

的不斷擴大發生在echo,而不是在read,你應該引用您的輸出:

echo "$line" 
+0

非常感謝,我一直在失明 – cb0 2009-12-11 15:30:18

+0

這個回答是不正確的! 對於包含「RewriteRule ^(。*)\。[\ d] {10} \。(css | js)$ $ 1. $ 2 [L]」的「sourceFile」 cat sourceFile |而讀線; do echo「$ {line}」產生 RewriteRule ^(。*)。[d] {10}。(css | js)$ $ 1. $ 2 [L]錯誤 而讀取-r行的同一個命令產生 RewriteRule ^(。*)\。[\ d] {10} \。(css | js)$ $ 1. $ 2 [L]正確 – Pancho 2014-08-18 09:24:09

+0

@catwalk -my道歉 - 根據以下我已經合併了2件事情,是正確的 – Pancho 2014-08-18 09:32:00

5

你應該閱讀您的文件這樣,使用-r選項

while read -r line 
do 
    echo "$line" 
    #..do something... 
done < "$file" 
+0

這是一個很好的做法,但它解決了一個不同的問題:關閉反斜槓解釋(例如,如果沒有它,讀取會將輸入行末尾的反斜槓視爲延續標記)。 – 2009-12-12 19:16:49