我正在编写一个脚本,该脚本接受确定进一步执行的参数。参数应为整个单词(script.sh guess
)及其快捷方式(script.sh g
)。注释行是我找到的第一种方法,第二行if
是my的灵活选择。无论如何,我很想听听经验丰富的人的意见。
而且,我想知道。有没有一种方法可以构建正则表达式,使其只使用g
或guess
,而不用gue
等零件?
#if [[ $1 == guess || $1 == g ]]; then
if [[ $1 =~ [guess] ]]; then
printf "You won!"
else
printf "You lost!"
fi
您首选的方法是什么?我似乎找不到大G的正确术语来在此处找到答案。
case $1 in
[Gg]|[Gg]uess) printf '%s' 'You won!';;
*) printf '%s' 'You lost!' >&2;;
esac
它应该与G
或g
和Guess
或guess
相匹配。尽管[Gg][Uu][Ee][Ss][Ss]
可能很极端,但应该可以使用,但是在bash中也有nocasematch
shell选项。
您所描述的正则表达式将是
if [[ $1 =~ g(uess)? ]]; then # accept g or guess
对于任何前缀,应该是
if [[ $1 =~ g(u(e(ss?)?)?)? ]]; then