处理Bash中参数快捷方式的惯用方式是什么

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

我正在编写一个脚本,该脚本接受确定进一步执行的参数。参数应为整个单词(script.sh guess)及其快捷方式(script.sh g)。注释行是我找到的第一种方法,第二行ifmy的灵活选择。无论如何,我很想听听经验丰富的人的意见。

而且,我想知道。有没有一种方法可以构建正则表达式,使其只使用gguess,而不用gue等零件?

#if [[ $1 == guess || $1 == g ]]; then 
if [[ $1 =~ [guess] ]]; then
    printf "You won!"
else
    printf "You lost!"
fi

您首选的方法是什么?我似乎找不到大G的正确术语来在此处找到答案。

bash shell syntax
2个回答
1
投票
case $1 in
   [Gg]|[Gg]uess) printf '%s' 'You won!';;
    *) printf '%s' 'You lost!' >&2;;
esac

它应该与GgGuessguess相匹配。尽管[Gg][Uu][Ee][Ss][Ss]可能很极端,但应该可以使用,但是在bash中也有nocasematch shell选项。


0
投票

您所描述的正则表达式将是

if [[ $1 =~ g(uess)? ]]; then  # accept g or guess

对于任何前缀,应该是

if [[ $1 =~ g(u(e(ss?)?)?)? ]]; then
© www.soinside.com 2019 - 2024. All rights reserved.