确保字符串开头有一个冒号

问题描述 投票:0回答:2

我正在使用 getopts 来解析选项。我想确保

optstring
在开头只有一个冒号,如果不存在我想引入它。

这里是optstring初始化的例子

  local optstring="sn:z:" 
bash getopts
2个回答
0
投票
optstring=:${optstring#:}

首先我们无条件地添加一个冒号,然后我们使用参数扩展来扩展我们的字符串,删除任何预先存在的冒号。


0
投票

此 POSIX 兼容代码(使用 Bash 和 Dash 测试)处理字符串开头的任意数量的冒号:

optstring=:${optstring#${optstring%%[!:]*}}
  • ${optstring%%[!:]*}
    扩展为
    $optstring
    开头的(可能为空)冒号串。它通过删除第一个非冒号字符 (
    [!:]
    ) 及其后面的所有内容来实现。
  • ${optstring#${optstring%%[!:]*}}
    扩展为
    $optstring
    并删除了开头的所有冒号。
© www.soinside.com 2019 - 2024. All rights reserved.