在bash中使用回车执行字符串比较

时间:2013-12-04 15:01:52

标签: string bash shell sh

为什么以下代码在bash中失败?注意,我正在尝试执行更复杂的比较,例如“somestring \ r \ n”;这只是一个简化的例子。

我可以确认回车“ascii 13”进入脚本。但我无法与常规的字符串比较进行比较。

正匹配的预期结果为“1”。

命令行:

echo -e "\r" | ./test.sh

脚本:

ord() {
   printf '%d' "'$1"
}

read a
echo "1st char: $(ord ${a:0:1})"

left="${a:0:1}"

if [ "$left" = "\r" ]; then
   echo 1
fi

exit 0

1 个答案:

答案 0 :(得分:4)

以下将说明如何确定字符串是否包含回车符:

read a
if [[ $a =~ $'\r' ]]; then
  echo 1;
fi

执行它说:

echo -e "something\r" | bash foo

将返回

1

编辑:如果你想知道字符串的最后一个字符是否包含回车符,你可以说:

if [[ ${a: -1} = $'\r' ]]; then
  echo 1;
fi