我有一个字符串,例如time=1234
,我想在=
符号后面只提取数字。但是,此数字可以在0到100000之间(例如 - time=1
,time=23
,time=99999
等。)
我已尝试$(string:5:8}
之类的内容,但这仅适用于某个长度的示例。
如何在=
符号后获取所有内容的子字符串?我更愿意在没有cut
或awk
等外部命令的情况下执行此操作,因为我将在可能具有或不具有该功能的设备上运行此脚本。我知道有些例子使用外部函数,但我试图找到一个没有使用它的解决方案。
答案 0 :(得分:6)
s=time=1234
time_int=${s##*=}
echo "The content after the = in $s is $time_int"
这是一个参数扩展,匹配来自变量前面的*=
的所有内容 - 因此,所有内容都包括最后一个=
。
如果打算将其视为非贪婪(也就是说,只删除第一个 =
而不是 last {{1}的内容}),使用=
- 一个${s#*=}
而不是两个。
参考文献:
答案 1 :(得分:2)
如果time=
部分不变,您可以使用${str#time=}
如果你执行str='time=123123'
,我会说你echo ${str#time=}
123123