shell脚本使用两个横杠接收外部参数
首先,效果是这样的:
既可以处理短选项(-)又可以处理长选项(--)
[developer@hadoop-cluster-manager shell]$ ./demo.sh --help
sqoop程序开始运行: demo.sh
Usage: ./demo.sh [options]Options:--append, -a: 追加导入(默认为追加模式)--overwrite, -o: 覆盖导入 --method, -m: single-单日导入interval-区间导入all-全表导入--date, -d: 单日导入,某一日期数据(格式为yyyymmdd)--startdate, -s: 区间导入,开始日期--enddate, -e: 区间导入,结束日期--help, -h 帮助
shell脚本接外部参数有一种很简单的办法,在脚本中使用$0,$1,$2...指代执行脚本时传入的第几个参数($0是脚本名)。
但是,这样做毕竟不够优雅,
另一种方法shell脚本内使用getopts命令,只可以接短选项(eg:-d,-s,-h),很方便,比较简单,可以自己去搜一搜。
但如果想要达成上面这种效果同时支持长选项和短选项(eg:--date,-d,--startdate,-s,--help,-h),
就只能使用getopt命令了:
# 定义命令执行选项
# 参数后面不加冒号(a)表示后面不接参数 eg:-a,--append
# 参数后面加冒号(a:)表示后面一定要接参数 eg:-d 20201224,--date 20201224
# 参数后面加两个冒号(a::)表示后面参数可接可不接
if ! ARGS=$(getopt -o aom:d:s:e:h --long append,overwrite,method:,date:,startdate:,enddate:,help -n "$0" -- "$@"); thenecho "Terminating..."echo -e "Usage: ./$SCRIPT_NAME [options]\n"echo -e "Options:\n --append, -a: 追加导入(默认为追加模式)\n --overwrite, -o: 覆盖导入 \n\n --method, -m: single-单日导入\n interval-区间导入\n all-全表导入\n\n --date, -d: 单日导入,某一日期数据(格式为yyyymmdd)\n\n --startdate, -s: 区间导入,开始日期\n --enddate, -e: 区间导入,结束日期\n\n --help, -h 帮助"exit 1
fi# 将规范化后的命令行参数分配至位置参数($1,$2,...)
# The -- ensures that whatever options passed in as part of the script won't get interpreted as options for set, but as options for the command denoted by the $progname variable.
eval set -- "${ARGS}"# 接受执行选项;赋值给变量
while true; docase "$1" in-a|--append)mode='append'shift;;-o|--overwrite)mode='overwrite'shift;;-m|--method)method=$2shift 2;;-d|--date)date=$2shift 2;;-s|--startdate)startdate=$2shift 2;;-e|--enddate)enddate=$2shift 2;;--)shiftbreak;;-h|--help)echo -e "Usage: ./$SCRIPT_NAME [options]\n"echo -e "Options:\n --append, -a: 追加导入(默认为追加模式)\n --overwrite, -o: 覆盖导入 \n\n --method, -m: single-单日导入\n interval-区间导入\n all-全表导入\n\n --date, -d: 单日导入,某一日期数据(格式为yyyymmdd)\n\n --startdate, -s: 区间导入,开始日期\n --enddate, -e: 区间导入,结束日期\n\n --help, -h 帮助"exit 0;;?)echo "missing options, pls check!"exit 1;;esac
done
shell脚本使用两个横杠接收外部参数相关推荐
- linux命令2个杠是什么意思,shell脚本使用两个横杠接收外部参数的方法
首先,效果是这样的: 既可以处理短选项(-)又可以处理长选项(--) [developer@hadoop-cluster-manager shell]$ ./demo.sh --help sqoop程 ...
- Shell脚本对比两个文本文件找出不同行的2个方法分享
这篇文章主要介绍了Shell脚本对比两个文本文件找出不同行的2个方法分享,本文分别使用comm命令法.grep命令法实现,需要的朋友可以参考下 亲自实验过的方法如下: 第一种:comm命令法 命令如下 ...
- shell脚本的两种执行方式区别举例
1. sh及bash方式执行: 第一个字母l:看来sh只是bash的一个链接. 要了解区别,先建立一个实验脚本如下: echo 'udir=`pwd`' >testsource.sh #符号为单 ...
- linux脚本多个条件比较大小,shell脚本-比较两个整数大小
开发shell脚本分别实现以脚本传参以及read读入的方式比较2个整数大小.用条件表达式(禁止if)进行判断并以屏幕输出的方式提醒用户比较结果.注意:一共是开发2个脚本.当用脚本传参以及read读入的 ...
- 运行 Shell 脚本有两种方法:
1.作为可执行程序 将上面的代码保存为 test.sh,并 cd 到相应目录: chmod +x ./test.sh #使脚本具有执行权限 ./test.sh #执行脚本 注意,一定要写成 ./tes ...
- shell脚本截取两个关键字之间的字符
$ mount | grep /media/xhx /dev/sda1 on /media/xhx/UBUNTU 20_0 type vfat (rw,nosuid,...) /dev/mmcblk0 ...
- Linux shell脚本附带选项(参数传递及接收)
- python 接收外部参数_python 接收处理外带的参数方法
python 接收处理外带的参数方法 在执行python 代码的时候,有时候需要传递外面的参数进行处理 这个该怎么实现呢? 需要一个模块 from sys import argv 当然也可以直接只导入 ...
- java源码如何启动脚本_使用Shell脚本如何启动/停止Java的jar程序
本文介绍如何使用Shell脚本来开启和停止jar程序的后台运行,以及如何实现out大文件的切分.另外,补充一些后台运行的小知识. 启动脚本:start_upload.sh #!/bin/sh nohu ...
- php写一个shell脚本文件格式,一篇文章学会——shell脚本编写
用了caffe有一段时间了,感觉自己写shell脚本的能力有待提高,特地从菜鸟笔记处系统的看了一遍,其实学习基础就可,内容也不多,我就不总结了.把网站上的内容用markdown重新编辑了一下,各位可以 ...
最新文章
- requests模块--python发送http请求
- 调试代码 2017-03-13
- struts2总体介绍
- 互联网1分钟 |1220
- 大文件拆分小文件求top_将文件拆分为流
- SNMP学习之结构体snmp_secmod_def
- mt4交易软件云服务器_MT4软件使用教程1常见货币对交易图表类型
- startService和onBinderService混合开发音乐播放器
- jquery java aes_[代码全屏查看]-java、js之间使用AES加密通信数据
- 第八届蓝桥杯第十题 k倍区间
- linux下组管理命令详解
- Redis 禁止使用耗时命令和时间复杂度为O(n)的命令
- Struts2.0 + Spring2.5 + Hibernate3.3开发环境的配置(1)
- 不能使用泛型的形参创建对象_泛型就这么简单
- hackerrank初级篇之Plus Minus
- js 实现当有省略号时,显示title,无省略号不显示title
- 在职读研难,社科院与杜兰大学金融管理硕士项目让读研多了一种选择
- Xamarin 初学,设计一个简单的美景展示App(只实现了部分功能)
- php无法访问_php网站无法访问可能是什么原因
- Android控制wifi开关
热门文章
- 机器人——人类的终极进化
- 树莓派CM4+CM IO上手,查看DDR和eMMC容量
- 正则表达式,判断输入的字符串是否只包含数字、字母、下划线三种随机组合,字符串可以包含一个或多个空格但头尾不能为空格,全为空格组成等限定字符串格式规则
- 花间一壶酒之杂文杂谈
- Android客户端支付宝支付
- 用Todd Motto揭秘JavaScript
- android 语音助手开发,Kotlin开发AI语音助手App 先人一步抓紧移动端AI时代发展机会...
- 玩转数据可视化之R语言ggplot2:(四)单一基础几何图形绘制
- RK3399平台开发系列讲解(USB网卡)5.47、USBNET驱动模型
- FA_MASS_ADDITIONS Interface Table 资产成批增加