Bash:如何打印字符串/ *

时间:2015-11-09 14:42:05

标签: bash

我需要读取一个文件并按原样打印出大部分行。我这样做是这样的:

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

不是像我想要的那样打印/ *,而是打印目录列表。

如何像原始文件一样打印读取线?

2 个答案:

答案 0 :(得分:3)

要打印包含变量内容的字符串,请使用printf

printf '%s\n' "$line"

\n附加换行符,当然是可选的。

适用于参数扩展的常规规则。始终在变量周围使用双引号。

答案 1 :(得分:2)

快速指南:

  • echo $var应该打印出变量

  • 中的内容
  • echo '$var'会打印出单引号内的确切内容

  • echo "$var"将打印出变量中包含的内容(不执行)

但是,未加引号的样式echo $var 文件名扩展和单词拆分的约束,而echo "$var"则会对此进行抑制。

因此,根据您的需要,echo "$var"绝对是安全的。