Chinaunix首页 | 论坛 | 博客
  • 博客访问: 543243
  • 博文数量: 119
  • 博客积分: 3167
  • 博客等级: 中校
  • 技术积分: 1215
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-20 21:21
文章分类

全部博文(119)

文章存档

2015年(21)

2012年(4)

2011年(1)

2007年(11)

2006年(50)

2005年(32)

分类: LINUX

2006-01-18 17:33:39

常用的参数
$#  参数的个数
$* 所有的参数
$@ 所有的参数
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 没有出错 这时
阅读(2046) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~