shell的getopts:用getopts获取命令行参数

jackxiang 2011-12-28 20:38 | |
常用的参数
$#  参数的个数
$* 所有的参数
$@ 所有的参数
shift来处理参数 一般两种形式
============================
while [ -n $# ]
do
   :
   shift
done
=============================
while [ $1 ]
do
   :
   shift n
done
==============================
使用getopts来取参数
getopts string options
例如
while getopts "lur:" opt
do
        case $opt in
        l) list="menu";;
        u) user="$OPTARG";;
        r) ro="$OPTARG";;
        ?) echo "Usage: `basename $0` -l -u user -r yes|no";;
        esac
done
# 说明
while getopts "lur:" opt
string 部分 "lur" 指定可以带的参数为 -l -u -r 并保存在opt这个变量中 ,
r后面的冒号表示 -r 后面必须指定一个参数 比如 -r yes
并且这个参数yes默认是保存在OPTARG变量中的
如果 -r 后面没有指定参数 那么会提示出错 并opt被设置为?重新处理 这个opt
对于必须制定参数 却没有读取到的错误 可以在string的开始加上: 来处理
修改后
#!/bin/bash
while getopts ":lu:r:" opt
do
        case $opt in
        l) list="menu";;
        u) user="$OPTARG";;
        r) ro="$OPTARG";;
        ?) echo "Usage: `basename $0` -l -u user -r yes|no";;
        esac
done
运行一下
[root@localhost code]# ./sc.sh -l -u
Usage: sc.sh -l -u user -r yes|no
[root@localhost code]# ./sc.sh -u -r -l
[root@localhost code]#
./sc.sh -u -r -l 没有出错 这时
来自:http://linux.chinaunix.net/techdoc/system/2006/01/18/926938.shtml

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/4885/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]