在bash中使用case语句中的通配符
我正在制作一个简单的bash脚本。它接受两个选项(-d和-f)。我还想允许这个选项的长版本(-directory和-file)。我试着使用花括号通配符,但不起作用。有什么建议吗 谢谢在bash中使用case语句中的通配符,bash,wildcard,Bash,Wildcard,我正在制作一个简单的bash脚本。它接受两个选项(-d和-f)。我还想允许这个选项的长版本(-directory和-file)。我试着使用花括号通配符,但不起作用。有什么建议吗 谢谢 #!/bin/bash while test $# != 0 do case $1 in -f) # do something ;; {-d,-directory}) # do something ;; *) echo "error" ;; es
#!/bin/bash
while test $# != 0
do
case $1 in
-f)
# do something
;;
{-d,-directory})
# do something
;;
*)
echo "error"
;;
esac
shift
done
使用管道符号:
case $1 in
-f)
# do something
;;
-d|-directory)
# do something
;;
*)
echo "error"
;;
esac
case语句中的各种选项都是shell脚本模式,其中一个模式实际上可以是由该管道符号分隔的多个模式。例如,您也可以在此模式中使用正则表达式
-[dD]|-directory)
将同时匹配-d
、-d
和-directory
使用管道符号:
case $1 in
-f)
# do something
;;
-d|-directory)
# do something
;;
*)
echo "error"
;;
esac
case语句中的各种选项都是shell脚本模式,其中一个模式实际上可以是由该管道符号分隔的多个模式。例如,您也可以在此模式中使用正则表达式
-[dD]|-directory)
将与您可以使用的-d
、-d
和-directory
匹配
-d|-directory)
# do something
;;
但您应该考虑使用双破折号来匹配“长选项”,如您可以使用的--directory
中的选项
-d|-directory)
# do something
;;
但是您应该考虑使用双破折号来匹配“长选项”,如在
--directory
中,也许您会对解析命令行参数的getopt
感兴趣。也许您会对解析命令行参数的getopt
感兴趣。是的,双破折号更好!谢谢,双短跑更好!谢谢