代码之家  ›  专栏  ›  技术社区  ›  Idris.AH

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

  •  2
  • Idris.AH  · 技术社区  · 6 年前

    我有一根绳子:

    Bearers | paths: '/org/........../Bearer/0'
    

    我将字符串分配给一个名为 output_string .

    output_string="Bearers | paths: '/org/........../Bearer/0'"
    

    / 它给出了输出 1'

    BEARER_NUMBER={output_string##/}
    

    然后我试着去拿 1 1英尺

    BEARER_NUMBER={BEARER_NUMBER%'*}
    

    但是,在 BEARER_NUMBER%'* 它认为从星号开始的一切都是一个报价的一部分,即一个尚未结束的报价。

    从本质上说,我在寻求另一种获得第二个字符到最后一个字符的方法,或者如何摆脱撇号。如有任何帮助,我们将不胜感激。

    1 回复  |  直到 6 年前
        1
  •  1
  •   colidyre    6 年前

    如果您只对这个数字感兴趣,可以使用regex和组引用,如下所示:

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

    [[:digit:]]\+ 一场贪婪的比赛之后直到最后 / 会发生并忽略数字后面的一切。神奇之处在于定义组并只得到组的结果。