我正在使用 getopts 来解析选项。我想确保
optstring
在开头只有一个冒号,如果不存在我想引入它。
这里是optstring初始化的例子
local optstring="sn:z:"
optstring=:${optstring#:}
首先我们无条件地添加一个冒号,然后我们使用参数扩展来扩展我们的字符串,删除任何预先存在的冒号。
此 POSIX 兼容代码(使用 Bash 和 Dash 测试)处理字符串开头的任意数量的冒号:
optstring=:${optstring#${optstring%%[!:]*}}
${optstring%%[!:]*}
扩展为 $optstring
开头的(可能为空)冒号串。它通过删除第一个非冒号字符 ([!:]
) 及其后面的所有内容来实现。${optstring#${optstring%%[!:]*}}
扩展为 $optstring
并删除了开头的所有冒号。