在网上的各个地方,我发现:
\015
\012
\x0a - hex
\n
\r
全部作为各种换行符/回车符的同义词...
但是在这个小脚本中,我无法识别出遇到换行符的情况-有人可以告诉我我应该在if行中检查什么吗?
#!/bin/bash
test="this is a
test"
for a in "$test"; do
if [[ "$a" == '\012' ]] ; then
echo "FOUND NEWLINE"
fi
echo "$a"
done
欢迎使用Stack Exchange。请不要以这种方式编辑您的问题,因为它会使现有的答案变得毫无意义。由于您已经找到解决问题的方法,因此可以将其发布为替代答案。
—
吉尔(Gilles)“所以,别再邪恶了”,
@nicerobot如果根本没有换行符,
—
Arcege 2011年
wc -l
则将返回0;您应该添加答案作为答案
@lolfrog解决方案不应在问题中,您应标记具有解决方案的答案
—
Arcege 2011年
cat | while read line; do ...; done
,您将知道每次迭代都有一个回车符。如果您的输入可以是\r
不带\n
的文件,则只需tr '\r' '\n'
在处理输入时转换文件即可。如果您只需要知道是否有多行:wc -l
。