我有一个bash脚本,您可以使用“--option parameter”指定选项:
if [ ${1:0:2} != '--' ] ; then
echo -e "Unrecognized option: $1\n$requestHelpMessage"; exit 1;
fi
if [ ! $2 ];
then echo -e "Expected parameter for $1\n$requestHelpMessage"; exit 1;
fi
case ${1:2} in
branch) # do something with $2 here
batch) # do something with $2 here
version) # do something with $2 here
*) # you get the idea
esac
我想扩展它以便能够处理“--option = parameter”。是否有一种简单的方法可以将“=”分开而不用特殊的套管?
答案 0 :(得分:3)
请尝试使用“getopt”,而不是使用getopt或进行自己的设置。它支持long(word)和short(字符)参数。
以下是使用中的示例:
get_inputs () {
set -- $( getopt -u -l class:,desc:,force,host:,help,verbose "c:d:fh:v?" "$@" )
while [ $# -gt 0 ]; do
case "$1" in
-c|--class)
CLASS=$2
shift
;;
-d|--desc)
DESCR=$2
shift
;;
-f|--force)
FORCE=1
;;
-h|--host)
HOST=$2
shift
;;
-v|--verbose)
VERBOSE=1
;;
--help)
usage
exit
;;
*)
break
;;
esac
shift
done
}
答案 1 :(得分:0)
稍作修改即可实现您的目标:
if [[ ! $1 =~ "^--?" ]] ; then
echo -e "Unrecognized option: $1\n$requestHelpMessage"; exit 1;
...
case $1 in
-*branch) # do something with $2 here
-*batch) # do something with $2 here
-*version) # do something with $2 here
*) # you get the idea
esac
测试允许-
$1