getopts和shift 的简单应用

简介:

getopts的简单应用:

脚本:

#!/bin/bash

while getopts ":a:b:c" SWITCH;do

case $SWITCH in

a) echo "choose -a"

echo $OPTARG

;;

b) echo "choose -b"

echo $OPTARG

;;

c) echo "choose -c"

;;

\?) echo "unknown option"

;;

esac

done

测试结果:

clip_image002

“:a:b:c”a前边加“:” 表示忽略选项产生的错误输出。a后面的“:”表示可以在选项-a 后面加上参数。OPTARG用来储存参数的值。

shift的使用方法:shift命令是用来“截去(lops off)”;来自列表的位置参数,由左开始。一旦执行shift,$1的初始值会永远消失,取而代之的是$2的旧值。$2的值变成$3的旧值,

以此类推。$#值则会逐次减1。shift也可使用一个可选的参数,也就是要位移的参数的计数。

——(《shell脚本编程指南》130页)

举例:#/bin/bash

echo $1

shift

echo $1

clip_image004

下面,利用getopts命令和shift命令来构建一个简单的脚本,脚本的作用是通过调用此脚本使我们在写一个新的脚本时自动生成脚本的头部,包括作者,时间,版本,注释信息等等。

示例:

#!/bin/bash

while getopts ":a:d:" SWITCH;do

case $SWITCH in

a) AUTHOR=$OPTARG

;;

d) DESC=$OPTARG

;;

\?) echo "sorry,unknown option!"

echo "Usage:$0 -a author -d description filename"

exit 1

;;

esac

done

shift $[$OPTIND-1]

if ! grep "#!/bin/bash" $1 &>/dev/ull; then

cat>>$1<<EOF

#!/bin/bash

#date & time:`date +"%F %T"`

#Author:"${AUTHOR:=lily}" 如果不指明作者,默认是lily

#Description:$DESC

#Version:1.0

EOF

fi

vim +7 $1

wait

chmod u+x $1

新建一个脚本试试:./newscript.sh -a lucy -d "this is a test" d.sh

测试结果:

clip_image006










本文转自 490999122 51CTO博客,原文链接:http://blog.51cto.com/lyp0909/477887,如需转载请自行联系原作者
目录
相关文章
|
4月前
MFC编程 -- 判断是否按下ctrl和shift键
MFC编程 -- 判断是否按下ctrl和shift键
78 0
先按ctrl再按A和先按A再按ctrl一样吗?
先按ctrl再按A和先按A再按ctrl一样吗?
|
C++
VS Code 如何设置大小写转换快捷键
VS Code 如何设置大小写转换快捷键
1154 0
VS Code 如何设置大小写转换快捷键
shift
shift
79 0
|
Shell Linux 开发工具
Linux中Ctrl+C,Ctrl+Z,Ctrl+D说明
Ctrl+C:送SIGINT信号,默认进程会结束,但是进程自己可以重定义收到这个信号的行为。 Ctrl+Z:送SIGSTOP信号,进程只是被停止,再送SIGCONT信号,进程继续运行。
3717 0
Ui5 tool debug - ctrl alt shift s
Created by Wang, Jerry, last modified on Mar 03, 2016
Ui5 tool debug - ctrl alt shift s
|
Java Android开发
Ctrl-C和Ctrl-V
从这篇文章开始,我正式加入复制粘贴的大军,对,东东,我开始模仿你。修改POM文件导入需要的依赖,修改Import语句然后我突然发现自己project的jre环境居然是1.5发现这个情况的原因是遇到了这个问题:low到爆啊
1224 0