Linux基础之 getopts
前言
我们在使用别的东西的脚本的时候, 经常有这样的操作. cp -rp xxx/ xxx/
. 其中-rp
是对于原命令的可选项, 可是对于原命令的一个增强. 其实, 这是使用了getopt
.
正文
getopt命令
为我们提供了-x(单字母缩写)
与--name(长单词)
这两种选项. 其实, 在我们使用不是需要特别多的选择的时候-x(单字母缩写)
完全是够用了.
- case1 简单例子
基本使用. 用起来尝尝鲜.
#!/bin/sh
#sh config-env.sh -k $key -t $token
key=
token=
# getopts :k :t 参数
while getopts "k:t:" opt; do case $opt in k) echo "-key = $OPTARG" key=$OPTARG;;t) echo "-token = $OPTARG" token=$OPTARG;; \?) echo "Invalid option: -$OPTARG" ;; esac
done echo key${key} token${token}.
# 脚本执行结果
localhost:Desktop Sean$ ./env-config.sh -k hao1123 -t GGG
-key = hao1123
-token = GGG
keyhao1123 tokenGGG.
- case2 业务逻辑
在业务的使用过程中, 通常有这样几步(1. 读参数 2. 部分参数read读取 3. 注释配置文件 4. 插入配置文件). 下面我们来实现这个过程.
#!/bin/sh
#sh config-env.sh -k $key -t $token
key=
token=
# getopts :k :t 参数
while getopts "k:t:" opt; do case $opt in k) echo "-key = $OPTARG" key=$OPTARG;;t) echo "-token = $OPTARG" token=$OPTARG;; \?) echo "Invalid option: -$OPTARG" ;; esac
done #echo key${key} token${token}.otherconifg=""
otherconifgTmp=""
read -t 300 -p "The otherconfig .(ex: otherconfig=kk): " -r otherconifgTmp ;
if [ "${otherconifgTmp}" != "" ]; thenotherconifg=${otherconifgTmp}echo "otherconifg : ${otherconifg}"
fi# 注意 Mac 上要写成 sed -i '' 's/^demo.key=.*/demo.key='$key'/' xxx/env.properties;
# Linux 上 不用加 ''# 注释
sed -i 's/^demo.key=.*/\#demo.key=/' ../config/application.properties;
sed -i 's/^demo.token=.*/\#demo.token=/' ../config/application.properties;
sed -i 's/^demo.otherconfig=.*/\#demo.otherconfig=/' ../config/application.properties;# 插入
echo "demo.key=$key" >> ../config/application.properties;
echo "demo.token=$token" >> ../config/application.properties;
echo "demo.otherconfig=$otherconfig" >> ../config/application.properties;
# 使用结果
localhost:Desktop Sean$ vi env-config.sh
localhost:Desktop Sean$ ./env-config.sh -k hello -t world
-key = hello
-token = world
The otherconfig .(ex: otherconfig=kk): ggg
otherconifg : ggg
localhost:Desktop Sean$ cat ./config/application.properties
#demo.key=
#demo.token=
#demo.otherconfig=
demo.key=hello
demo.token=world
demo.otherconfig=
需要注意的是, 在sed
命令执行时需要判断文件是否存在. 另外, 在Mac
上运行sed
时需要加上``.(这在脚本的注释内已经指出)
Reference
[1]. Shell 参数(2) --解析命令行参数工具:getopts/getopt
[2]. 选项处理(三)使用 getopt 处理多命令行选项
[3]. getopts命令行参数处理
[4]. 使用getopt命令解析shell脚本的命令行选项
[5]. 使用getopt处理shell脚本的参数
Linux基础之 getopts相关推荐
- 干货!一篇文章集合所有Linux基础命令,适合所有菜鸟学习和老手回顾!
阿里云 干货!一篇文章集合所有Linux基础命令,适合所有菜鸟学习和老手回顾! 1 文件{ ls -rtl # 按时间倒叙列出所有目录和文件 ll -rt touch file # 创建空白文件 ...
- Linux基础知识与命令
目录 一.Shell 1.Shell定义 2.不同的Shell环境 二.Linux命令的分类 1.Shell与内部命令.外部命令 2.help命令可以查看内部命令 3.使用type命令来区分内外部命令 ...
- 小猿圈Linux基础面试题,看看你能答对几道?
最近身边的很多朋友都在学习linux,从最开始的安装软件都需要百度一天的他们,现在已经成长为了,不需要百度就可以把自己弄懵圈的了,接下来的几天小猿圈linux老师会为大家准备一些实用的linux技巧分 ...
- linux基础知识-链接列表
linux基础知识-链接列表 1. 安装centos 7 1.1 Linux的初识 1.2 centOS 7安装教程 1.3 centOS 7配置ip和网络问题排查 1.4 PuTTY和Xshell远 ...
- linux基础知识_压缩—进程管理-网络管理-ftp-nfs-ssh-scp
linux基础知识_压缩-进程管理-网络管理-ftp-nfs-ssh-scp 1.压缩包管理 gzip .gz格式的压缩包,不打包,分别压缩,原文件消失 bzip2 .bz2格式的压缩包,原文件不会消 ...
- 《嵌入式 Linux应用程序开发标准教程(第2版)》——第1章 Linux快速入门 1.1 嵌入式Linux基础...
本节书摘来自异步社区<嵌入式 Linux应用程序开发标准教程(第2版)>一书中的第1章,第1.1节,作者 华清远见嵌入式培训中心,更多章节内容可以访问云栖社区"异步社区" ...
- linux基础概念和个人笔记总结(6)
防伪码:曾经梦想仗剑走天涯,回过头,却发现还是放不下家的牵挂 后续理论的验证图文详解,我会更新,希望大家可以参考 第十一章 FTP文件传输服务 1.FTP连接 控制连接:tcp21端口,用于发送ftp ...
- Linux基础第一周
Linux基础第一周 命令的格式 command(命令)option(选项)arguments(参数)三部分组成,之间需要空格间隔 options 选项 启用命令的某项功能,从而更改命令的功能 arg ...
- 20155301 滕树晨linux基础——linux进程间通信(IPC)机制总结
20155301 滕树晨linux基础--linux进程间通信(IPC)机制总结 共享内存 共享内存是在多个进程之间共享内存区域的一种进程间的通信方式,由IPC为进程创建的一个特殊地址范围,它将出现在 ...
最新文章
- QT 中 界面中消息的停留时间解决方案 以及 label 中字体大小和换行设置
- CH - 6803 导弹防御塔(二分图最大匹配-多重匹配(拆点法))
- mca终端_MCA的完整形式是什么?
- UTF8有BOM和无BOM
- MFC的六大关键技术
- 管理口地址 ibm_WAN口有IP地址上不了网如何解决 WAN口有IP地址上不了网解决方法【详解】...
- 阿帕奇链接mysql_apache guacamole 使用mysql 连接
- UVA 10765 Doves and bombs 割点
- VMware ESXi虚拟机安装Windows7
- access用姓名字段统计人数_用Access统计新生数据
- VMware开机自启虚拟机系统
- JDBC-03:PreparedStatement如何实现对数据库的增删改查操作
- 视频去重方法批量处理去重消重去水印去logo软
- C程序设计谭浩强版总结笔记
- 美团CodeM2018资格赛赛题官方版本详解(二)——可乐
- python code mudule,pipe,stdin,stdou,IMPORTANT
- mysql的复杂查询
- 【Pygame】细致讲解开发Flappy Bird小游戏
- 因子分析SPSS数学建模
- 数码相机PC端拍照控制软件 PowerVCap V1.0