为什么以下代码在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
答案 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