在bash中进行参数扩展时转义单个撇号

在bash中进行参数扩展时转义单个撇号,bash,shell,Bash,Shell,我有一个字符串: Bearers | paths: '/org/........../Bearer/0' 我正在尝试从字符串中获取0 我将字符串分配给一个名为output\u string的变量 output_string="Bearers | paths: '/org/........../Bearer/0'" 然后我得到最后一个/后面的字符串,它给出了输出1' BEARER_NUMBER={output_string##/} BEARER_NUMBER={BEARER_NUMBER%'

我有一个字符串:

Bearers | paths: '/org/........../Bearer/0'
我正在尝试从字符串中获取0

我将字符串分配给一个名为
output\u string
的变量

output_string="Bearers | paths: '/org/........../Bearer/0'"
然后我得到最后一个
/
后面的字符串,它给出了输出
1'

BEARER_NUMBER={output_string##/}
BEARER_NUMBER={BEARER_NUMBER%'*}
然后我尝试从
1'

BEARER_NUMBER={output_string##/}
BEARER_NUMBER={BEARER_NUMBER%'*}
然而,在
持票人编号%'*
中的撇号之后,它认为从星号开始的所有内容都是报价的一部分,即尚未结束的报价


本质上,我是在寻求另一种方法来获得倒数第二个字符,或者如何避开撇号。非常感谢您的帮助。

如果您只对数字感兴趣,您可以使用正则表达式和组引用,如下所示:

echo $output_string | sed 's/.*\/\([[:digit:]]\+\).*/\1/g'

这将在所有内容上进行贪婪匹配后查找数字
[[:digit:]\+
,直到最后一个
/
将出现,并忽略数字之后的所有内容。神奇之处在于定义组并只获取该组的结果。

awk-F”/“{print$NF}”$output\u string
NF表示当前记录的字段数,print$NF表示打印最后一个。我如何将此行等同于一个变量?当我回显您所写的内容时,它工作正常,但当我回显
bearer=$output\u string | sed's/*\/\([[:digit:]\+\)./\1/g'
时,当我回显$bearer时,它显示为空白,只需将其视为一个命令,其结果可以保存到名为
var
的变量中,并给出记号(
):
var=`echo$output\u string|sed's/*\/\([[:digit:]\+\)./\1/g`
我将投票表决这是正确的答案,因为我要求解决问题或其他解决方案。谢谢