Shell指令碼傳遞參數的3種方法比較_linux shell

來源:互聯網
上載者:User
#!/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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.