我有这个 shell 变量,它给我一个字符串,后跟 HTTP 返回代码。
# echo $response
good200
字符串的值可以是
good
或 bad
,最后 3 个字符是 HTTP 返回码。
我想提取子字符串和返回码,但 shell 没有裁剪字符串。
当我尝试使用负位置编号修饰符回显
$response
变量时,该值只是 not 被修剪。
# string=${response:3} # 3 IS OK AND THE STRING IS TRIMMED
# echo $string
d200
# httpcode=${response:-1:3} # -1 DOES NOTHING
# echo $httpcode
good200
如何正确捕获实际的字符串和HTTP代码?
负偏移量并非在所有 bash 版本中都可靠可用。如果要打印最后三个字符,请使用算术扩展计算起始偏移量。
echo "${s:$(( ${#s} -3 )):3}"