#!/usr/local/bin/bash
out=`grep apache README`
echo $out;
通常,grep在命令行上运行时会在单独的一行上显示每个匹配项。但是,在以上脚本中,分隔每个匹配项的换行符消失了。有谁知道如何保存换行符?
#!/usr/local/bin/bash
out=`grep apache README`
echo $out;
通常,grep在命令行上运行时会在单独的一行上显示每个匹配项。但是,在以上脚本中,分隔每个匹配项的换行符消失了。有谁知道如何保存换行符?
Answers:
您不会在分配中丢失它,而是在回声中丢失它。如果您:
echo "${out}"
使用以下脚本,您将看到类似的效果:
x="Hello,
I
am
a
string
with
newlines"
echo "====="
echo ${x}
echo "====="
echo "${x}"
echo "====="
输出:
=====
Hello, I am a string with newlines
=====
Hello,
I
am
a
string
with
newlines
=====
而且,与您的问题无关,但无论如何我还是要提及,我更喜欢使用$()构造而不是反引号,只是为了能够嵌套命令而带来的额外好处。因此,您的脚本行变为:
out=$(grep apache README)
现在看起来可能没有什么不同(也没有什么不同),但是它使更复杂的命令变得可能,例如:
lines_with_nine=$(grep $(expr 7 + 2) inputfile)