#!/bin/bash#extracting command text_text_text_line options as parametershelp_info(){  echo "NAME"  echo "/t$0"  echo "SYNOPSIS"  echo "/t$0 is a shell test about process options"  echo "DESCRIPTION"  echo "/toption like -a -b param1 -c param2 -d"}if [ $# -lt 0 ]then  help_infofinomal_opts_act(){  echo -e "/n### nomal_opts_act ###/n"  while [ -n "$1" ]  do  case "$1" in     -a)      echo "Found the -a option"      ;;    -b)      echo "Found the -b option"      echo "The parameter follow -b is $2"       shift      ;;    -c)      echo "Found the -c option"      echo "The parameter follow -c is $2"      shift      ;;    -d)      echo "Found the -d option"      ;;     *)       echo "$1 is not an option"      ;;  esac  shift  done}#用shell命令自建的選項解析,可以按照自己的想法實現#優點:自己定制,沒有做不到,只有想不到#缺點:麻煩getopt_act(){  echo -e "/n### getopt_act ###/n"  GETOPTOUT=`getopt ab:c:d "$@"`  set -- $GETOPTOUT   while [ -n "$1" ]   do  case $1 in     -a)      echo "Found the -a option"      ;;    -b)      echo "Found the -b option"      echo "The parameter follow -b is "$2""      shift      ;;    -c)      echo "Found the -c option"      echo "The parameter follow -c is "$2""      shift      ;;    -d)      echo "Found the -d option"      ;;    --)      shift      break      ;;     *)       echo "Unknow option: "$1""      ;;  esac  shift  done  param_index=1  for param in "$@"  do    echo "Parameter $param_index:$param"    param_index=$[ $param_index + 1 ]   done}#用getopt命令解析選項和參數#優點:相對與getopts來說是個半自動解析,自動組織選項和參數,用 -- 符號將選項與參數隔開#缺點:相對于getopts的缺點#1.需要與set -- 命令配合,不是必須,需要手動shift#2.選項參數中不支持空格如 -a -b dog -c "earth moon" -d -f param1 param2 就會解析錯誤getopts_act(){  echo -e "/n### getopts_act ###/n"  while getopts :ab:c:d ARGS  do  case $ARGS in     a)      echo "Found the -a option"      ;;    b)      echo "Found the -b option"      echo "The parameter follow -b is $OPTARG"      ;;    c)      echo "Found the -c option"      echo "The parameter follow -c is $OPTARG"      ;;    d)      echo "Found the -d option"      ;;     *)       echo "Unknow option: $ARGS"      ;;  esac  done  shift $[ $OPTIND -1 ]   param_index=1  for param in "$@"  do    echo "Parameter $param_index:$param"    param_index=$[ $param_index + 1 ]   done}#getopts 命令解析選項和參數#優點:可在參數中包含空格如:-c "earth moon"#      選項字母和參數值之間可以沒有空格如:-bdog#      可將未定義的選項綁定到?輸出#      Unknow option: ?nomal_opts_act -a -b dog -c earth -d -f param1 param2getopts_act -a -b dog -c "earth moon" -d -f param1 param2getopt_act -a -b dog -c earth -d -f param1 param2                                    
新聞熱點
疑難解答