在Bash中逐行读取文件会扩展特殊字符

时间:2009-12-11 15:25:37

标签: bash readline

我正在解析Bash中的一些.html文件。我用以下内容阅读输入:

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

现在我已经看到了一些非常奇怪的东西。文件中的某些行包含类似

的行
Resolution…: 720 * 576

但是bash给了我这个:

Resolution…: 720 mysript.sh another_script.pl 576

Bash将* char扩展为实际目录的内容。如何在不扩展的情况下逐行阅读文本。

2 个答案:

答案 0 :(得分:9)

扩展发生在echo,而不是read,你应该引用你的输出:

echo "$line"

答案 1 :(得分:5)

您应该使用-r选项

读取您的文件
while read -r line 
do
   echo "$line"
   #..do something...
done < "$file"