如何知道一个角色是否是回车?

Che*_*her 4 bash

问题:

我一直能够循环遍历字符来识别我想要的字符.但是,现在我想确定一个回车,我的做事方式似乎不起作用:

function removeCarriageReturn()
{
  word=""

  while IFS= read -r -n1 char ; do
    if [ "${char}" != "\r" ] ; then
      word="${word}${char}"
    fi
  done <<<"$1"

  printf '%s\n' "$word"
}
Run Code Online (Sandbox Code Playgroud)

结果:

由于我不知道的原因,它在回车前添加了"$",为什么?结果如下(来自Jenkins):

当分析的char是例如8时

++ '[' 8 '!=' '\r' ']'
Run Code Online (Sandbox Code Playgroud)

当char分析是\ r

++ '[' $'\r' '!=' '\r' ']'
Run Code Online (Sandbox Code Playgroud)

Eta*_*ner 5

$''引用是ANSI-C引用,它解释了一些转义序列.

没有被添加有这只是set -x显示你什么是真正发生的事情.你没有双字符串,"\r"你有一个文字\r,那是什么$'\r'.

这个事实(和set -x输出)也告诉你如何匹配你正在寻找的角色.使用$'\r'.