Zhr*_*hro 4 string bash shell sh
为什么下面的代码在 bash 中失败?请注意,我正在尝试执行更复杂的比较,例如“somestring\r”;这只是一个简化的例子。
我可以确认回车符“ascii 13”正在进入脚本。但我无法将其与常规字符串比较进行比较。
积极匹配的预期结果是“1”。
命令行:
echo -e "\r" | ./test.sh
Run Code Online (Sandbox Code Playgroud)
脚本:
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
Run Code Online (Sandbox Code Playgroud)
下面将说明如何确定字符串是否包含回车符:
read a
if [[ $a =~ $'\r' ]]; then
echo 1;
fi
Run Code Online (Sandbox Code Playgroud)
执行它时说:
echo -e "something\r" | bash foo
Run Code Online (Sandbox Code Playgroud)
会回来
1
Run Code Online (Sandbox Code Playgroud)
编辑:如果您想计算字符串的最后一个字符是否包含回车符,您可以说:
if [[ ${a: -1} = $'\r' ]]; then
echo 1;
fi
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9709 次 |
最近记录: |