我正在制作一个简单的bash脚本。它接受2个选项(-d和-f)。我还想允许这个选项的长版本(-directory和-file)。我尝试使用大括号通配符,但它不起作用。有什么建议吗?
谢谢!
#!/bin/bash
while test $# != 0
do
case $1 in
-f)
# do something
;;
{-d,-directory})
# do something
;;
*)
echo "error"
;;
esac
shift
done
答案 0 :(得分:4)
使用竖线符号:
case $1 in
-f)
# do something
;;
-d|-directory)
# do something
;;
*)
echo "error"
;;
esac
case语句中的各种选项都是shell脚本 patterns ,其中 pattern 实际上可以是由此管道符号|
分隔的多个模式。您还可以在此模式中使用正则表达式,例如
-[dD]|-directory)
会同时匹配-d
,-D
和-directory
。
答案 1 :(得分:2)
您可以使用
-d|-directory)
# do something
;;
但你应该考虑使用双短划线来匹配--directory
中的“长选项”。