孤独的猫

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1.使用$#

$ pg opt.sh

#!/bin/sh
#opt.sh

usage()
{
    echo "usage:'basename $0' start|stop process name "
}
OPT=$1
PROCESSID=$1
if [ $# -ne 2 ]
then
    usage
    exit 1
fi
case $OPT in
start|Start) echo "Starting..$PROCESSID"
  ;;
stop|Stop) echo "Stopping...$PROCESSID"
  ;;
*) usage
  ;;
esac

$# 表示命令行的个数,执行时用

$ opt.sh start named

Starting..start

$ opt.sh start

usage:'basename /home/dongjichao/bin/opt.sh' start|stop process name

2.shift命令

shift可以从左至右的选择命令行参数,如

$ cat -n opt2.sh
     1    #!/bin/sh
     2    # opt2.sh
     3    loop=0
     4    while [ $# -ne 0 ]
     5    do
     6        echo $1
     7        shift
     8    done

$ history | tail -n 10
 1541  cat opt
 1542  cat opt.sh
 1543  opt.sh start named
 1544  opt.sh start
 1545  cat -n opt2.sh
 1546  history | tail 100
 1547  history | tail -n 100
 1548  opt2.sh file1 file2 file3
 1549  history | tail -n 30
 1550  history | tail -n 10
dongjichao@dongjichao:~/bin$ !1548
opt2.sh file1 file2 file3
file1
file2
file3

3.使用shift处理文件转换

$ cat opt3.sh
#!/bin/sh
#opt3.sh

usage()
{
    echo "usage:`basename $0` -[l|u] file [files] ">&2
    exit 1
}

if [ $# -eq 0 ]; then
    usage
fi

while [ $# -gt 0 ]
do
    case $1 in
        -u|-U) echo "-u option specified"
            shift
            ;;
        -l|-L) echo "-l option specifed"
            shift
            ;;
        *) usage
              ;;
    esac
done

运行

$ opt3.sh -u -l -k
-u option specified
-l option specifed
usage:opt3.sh -[l|u] file [files]

4.getopts

有时需要写类似  $ 命令 -l -c 23这样的命令,这时需要用到getopts

以下getopts脚本接受下列选项或参数

a  设置变量ALL为true

h  设置变量HELP为true

f  设置变量FILE为true

v  设置变量VERBOSE为true

$ cat getopt1.sh

#!/bin/sh
#getopt1

ALL=false
HELP=false
FILE=false
VERBOSE=false

while getopts ahfgv OPTION
do
    case $OPTION in
    a)ALL=true
      echo "ALL is $ALL"
      ;;
    h)HELP=true
      echo "HELP is $HELP"
      ;;
    f)FILE=true
      echo "FILE is $FILE"
      ;;
    v)VERBOSE=true
      echo "VERBOSE is $VERBOSE"
      ;;
    esac
done

运行上面的脚本

$ getopt1.sh -a -h  

ALL is true
HELP is true

posted on 2011-05-22 16:02  孤独的猫  阅读(279)  评论(0编辑  收藏  举报