getopts shift 简单用法

简介:

1、getopts


myoption
#!/bin/bash
while getopts ":a  b" SWITCH;do ( a前面的表示忽略系统报错信息)
case $SWITCH in
  a) echo "-a option" ;;
  b) echo "-b option" ;;
 \?) echo "Unknow option" ;;
 esac
done


./myoption -a
 
myoption
#!/bin/bash
while getopts ":a:b" SWITCH;do (a后的冒号 表示a后面可以添加参数,a前面的冒号表示忽略系 统的报错)
case $SWITCH in
  a) echo "-a option" 
     echo "$OPTARG"(OPTARG是getopts内置的 变量,后面可以跟参数) 
       ;;
  b) echo "-b option" ;;
 \?) echo "Unknow option" ;;
 esac
done

 
op.sh
read -p "a number" A
read -p "b number" B

while getopts ":admp" SW;do
 case $SW in
 a) echo "$[$A+$B]";;
 d) echo "$[$A/$B]";;
 m) echo "$[$A*$B]";;
 p) echo "$[$A-$B]";;
\?) echo "unknow opreation";;
 esac
./op.sh -a
./op.sh -d

OPTIND 是索引指针 在选项中一次移动一个参数
OPTARG 当OPTIND处在一个特定的选项的时候可以 调用后面的参数
OPTING 指向一个参数

2、shift
shift 2 踢掉二个
./my.sh -a -b -c -d ss -e myfile
shift 5 $[OPTIND-1]  踢掉五个参数,引用 myfile
shift
 
a.sh
 

 

 
./a.sh a b
a
b
shift 一次踢去一个
 

本文转自 张玉坡 51CTO博客,原文链接:http://blog.51cto.com/fighter/470024

相关文章
|
4月前
|
开发工具 Perl
使用sed去掉代码中的行号
使用sed去掉代码中的行号
使用sed去掉代码中的行号
|
4月前
MFC编程 -- 判断是否按下ctrl和shift键
MFC编程 -- 判断是否按下ctrl和shift键
77 0
键盘排序、FN-Shift功能
每件事情或者每个事物都是有背景和由来的,就像是键盘上的每个键位字母,都是有存在的价值和意义的,缺一不可,发挥着它的巨大作用。
189 0
|
C++
VS Code 如何设置大小写转换快捷键
VS Code 如何设置大小写转换快捷键
1152 0
VS Code 如何设置大小写转换快捷键
|
IDE Unix Linux
shift命令使用方法 | 学习笔记
快速学习shift命令使用方法
shift命令使用方法 | 学习笔记
|
Unix Linux Shell
shift 命令使用方法 | 学习笔记
快速学习 shift 命令使用方法
177 0
shift 命令使用方法 | 学习笔记
|
Shell 开发工具 Perl
Shell中的文本处理工具、cut [选项参数] filename 说明:默认分隔符是制表符、awk [选项参数] ‘/pattern1/{action1}filename 、awk 的内置变量
Shell中的文本处理工具、cut [选项参数] filename 说明:默认分隔符是制表符、awk [选项参数] ‘/pattern1/{action1}filename 、awk 的内置变量
Shell中的文本处理工具、cut [选项参数] filename 说明:默认分隔符是制表符、awk [选项参数] ‘/pattern1/{action1}filename 、awk 的内置变量
|
应用服务中间件 Shell 数据安全/隐私保护
shell脚本case_模式匹配详解
在某种意义上,case语句是if语句的简洁版,case语句适合做字符串模式匹配,如果不同的字符值对应不同的功能则用case语句实现,case无法做比较以及测试命令,最后一个模式可以省略;; command -v 命令用来测试是否是一个命令看$?返回值即可 1.1根据系统版本匹配yum源文件
501 0