• 使用getopts处理Shell脚本参数


    一、下面的代码,可以通过"./getopts.sh -d 5"的方式获取参数:

     1 #!/bin/sh
     2 #
     3 # File:  getopts.sh
     4 #
     5 usage() {
     6 
     7 }
     8 day=7  #default value
     9 if [ $# -lt 1 ]; then
    10     usage
    11     exit 1
    12 else
    13 while getopts ":d:" opt; 
    14    do
    15      case $opt in
    16        d)
    17       day=$OPTARG   #get the value
    18           ;;
    19        ?)
    20       echo "How to use: $0 [-d DAY]" >&2    
    21           exit 1     
    22           ;;
    23           :)
    24       echo "Option -$OPTARG requires an argument." >&2
    25           exit 1     
    26           ;;
    27     esac
    28   done
    29 fi
    30 echo $day
    解释下面的部分:
    1 while getopts ":d:" opt; do
    

    第一个冒号表示忽略错误(例如出现了不认识的参数),并在脚本中通过::)来处理这样的错误;字母d则表示,接受参数-d;d后面的冒号表示 参数d接收值,即“-d 7”这样的形式;(这里opt变量,可以在while循环中引用当前找到的参数,试试输出$opt试试)

    如果是要有很多参数,那么写法可能是:

    1 while getopts ":ixarm:uneh" opt; do
    二、
     1 #! /bin/bash
     2 # 测试 getopts 的用法
     3 # 及与位置参数的关系
     4 usage()
     5 {
     6         echo 'basename $0' [-x] [-y] args
     7         exit 0
     8 }
     9 while getopts "xy:" options;do
    10         case $options in
    11                 x)      echo "you enter -x as an opton";;
    12                 y)      echo "you ecter -y as an optin"
    13                         echo "\$OPTARG is $OPTARG";;
    14                 \?)     usage;;
    15         esac
    16 done
    17 [[ -z $1 ]] && usage
    18 index=1
    19 for agrs in "$@";do
    20         echo \$$index: $agrs
    21         (( index ++ ))
    22 done
  • 相关阅读:
    搜狗输入法赏析
    第二次冲刺个人总结05
    程序员的自我修养阅读笔记01
    第十五周学习总结
    mysql 查询优化
    mysql explain 详解
    nginx基本配置与参数说明
    input输入框实现联想关键词功能
    JS图片懒加载
    mysql中timestamp,datetime,int类型的区别与优劣
  • 原文地址:https://www.cnblogs.com/wowchky/p/2729085.html
Copyright © 2020-2023  润新知