shell getopt 获取参数

#!/bin/sh
#说明
show_usage="args: [-i , -p , -u , -w , -a , -s , -d , -v ]\
				  [--ip=, --port=, --user=, --pwd=, --path=, --script=, --debug=, --version=]"
#参数
opt_ip=""
opt_port=""
opt_user=""
opt_pwd=""
opt_path=""
opt_script=""
opt_debug=""
opt_version=""
GETOPT_ARGS=`getopt -o i:p:u:w:a:s:d:v: -al ip:,port:,user:,pwd:,path:,script:,debug:,version: -- "$@"`
eval set -- "$GETOPT_ARGS"
#获取参数
while [ -n "$1" ]
do
	case "$1" in
		-i|--ip) opt_ip=$2; shift 2;;
		-p|--port) opt_port=$2; shift 2;;
		-u|--user) opt_user=$2; shift 2;;
		-w|--pwd) opt_pwd=$2; shift 2;;
		-a|--path) opt_path=$2; shift 2;;
		-s|--script) opt_script=$2; shift 2;;
		-d|--debug) opt_debug=$2; shift 2;;
		-v|--version) opt_version=$2; shift 2;;
		--) break ;;
		*) echo $1,$2,$show_usage; break ;;
	esac
done

if [[ -z $opt_ip || -z $opt_port || -z $opt_user || -z $opt_pwd || -z $opt_path || -z $opt_script || -z $opt_debug || -z $opt_version ]]; then
	echo $show_usage
	echo "opt_ip:"$opt_ip",opt_port:"$opt_port",opt_user:"$opt_user",opt_pwd:"$opt_pwd",opt_path:"$opt_path",opt_script:"$opt_script",opt_debug:"$opt_debug",opt_version:"$opt_version
	exit 0
fi

#开始处理
#ip port user pwd 连接服务器
#script path debug version 作为参数执行



有几个关键会被忽略导致失败的地方:

eval set -- "$GETOPT_ARGS" eval关键字是必须的,网上好多例子没有,坑爹

GETOPT_ARGS=`getopt -o i:p:u:w:a:s:d:v: -al ip:,port:,user:,pwd:,path:,script:,debug:,version: -- "$@"`

最后的--也是必须的,网上好多例子也没有,坑爹



转载于:https://my.oschina.net/u/659405/blog/467855

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值