我需要读取一个文件并按原样打印出大部分行。我这样做是这样的:
while read line; do
do stuff if line meets requirements
otherwise print it as is to output file like so:
echo $line >> $
done <<< "$(cat "$SOURCE_TESTBENCH")"
问题是有些行包含像这行
这样的东西/* // From testbench
打印出来自/的文件夹列表。实际上,这个简单的片段并没有按预期工作:
line=/*
echo $line
不是像我想要的那样打印/ *,而是打印目录列表。
如何像原始文件一样打印读取线?
答案 0 :(得分:3)
要打印包含变量内容的字符串,请使用printf
:
printf '%s\n' "$line"
\n
附加换行符,当然是可选的。
适用于参数扩展的常规规则。始终在变量周围使用双引号。
答案 1 :(得分:2)
快速指南:
echo $var
应该打印出变量
echo '$var'
会打印出单引号内的确切内容
echo "$var"
将打印出变量中包含的内容(不执行)
但是,未加引号的样式echo $var
受文件名扩展和单词拆分的约束,而echo "$var"
则会对此进行抑制。
因此,根据您的需要,echo "$var"
绝对是安全的。