getopts的使用

Posted hixiaowei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了getopts的使用相关的知识,希望对你有一定的参考价值。

1.getopts的经典例子

isRollback=0
rollbackVer=""
targetGroup=""
actionType=""
isSwitchLoad="1"
while getopts ":r:t:a:s:" opt
do
        case $opt in
                r ) isRollback=1
                    rollbackVer=$OPTARG;;
                t ) targetGroup=$OPTARG;;
                a ) actionType=$OPTARG;;
                s ) isSwitchLoad="0";;
                ? ) echo "Usages: sh deploy_ctl.sh [-t(a1 | a2 | a3 | a4 | c1 | c2 | f1 | f2 | h1 | h2 | m1 | m2)] [-r(versionNum)] [ -a(tomcat | apache | all) ][ -s ]"
                    exit 1;;
        esac
done

if [[  "a1" != "$targetGroup" &&  "a2" != "$targetGroup" &&  "a3" != "$targetGroup" &&  "a4" != "$targetGroup" &&  "c1" != "$targetGroup"   &&  "c2" != "$targetGroup"  &&  "f1" != "$targetGroup"  &&  "f2" != "$targetGroup"  &&  "h1" != "$targetGroup"   &&  "h2" != "$targetGroup"  &&  "m1" != "$targetGroup"  &&  "m2" != "$targetGroup"  &&  "other1" != "$targetGroup"  &&  "other2" != "$targetGroup" ]]
  then
  echo -e "\\033[41;37m ERROR:   $targetGroup is a wrong group name !!! \\033[0m";
  exit 0
  fi

  if [[  "tomcat" != "$actionType" &&  "apache" != "$actionType" && "all" != "$actionType"  && "restart" != "$actionType" ]]
  then
  echo  -e "\\033[41;37m ERROR:  $actionType  is a wrong actionType name !!! \\033[0m";
  exit 0
  fi

参考例子: https://www.cnblogs.com/klb561/p/8933992.html

2.如果目录不存在,就创建

#!/bin/bash

if [ ! -n "$1" ]
then
        echo "Usages: sh enterPath.sh [ filePath ]"
        exit 0
fi

dirs=$(echo $1 | tr "/" "\\n")
if [ "/"="$dirs:1:(1-1)" ]
then
  cd /
fi
echo the tmp file path is : $1
for dir in $dirs
  do
    if [ ! -d "$dir" ]; then
      echo creating file: $dir
      mkdir $dir
    fi
    cd $dir
done

 

以上是关于getopts的使用的主要内容,如果未能解决你的问题,请参考以下文章

使用 getopt/long_getopt 的正确方法

getopt()与getopt_long()的使用简介

shell 脚本参数解析之 getopt getopts

使用功能不适用于 getopt

windows上使用getopt和getopt_long

在 bash 中使用 getopts 的布尔 cli 标志?