Shell腳本傳遞參數(shù)的3種方法比較
來源:易賢網(wǎng) 閱讀:2696 次 日期:2015-05-11 11:22:19
溫馨提示:易賢網(wǎng)小編為您整理了“Shell腳本傳遞參數(shù)的3種方法比較”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了Shell腳本傳遞參數(shù)的3種方法比較,本文直接給出代碼示例,在代碼中包含詳細注解,需要的朋友可以參考下

#!/bin/bash

#extracting command text_text_text_line options as parameters

help_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_info

fi

nomal_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命令自建的選項解析,可以按照自己的想法實現(xiàn)

#優(yōu)點:自己定制,沒有做不到,只有想不到

#缺點:麻煩

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命令解析選項和參數(shù)

#優(yōu)點:相對與getopts來說是個半自動解析,自動組織選項和參數(shù),用 -- 符號將選項與參數(shù)隔開

#缺點:相對于getopts的缺點

#1.需要與set -- 命令配合,不是必須,需要手動shift

#2.選項參數(shù)中不支持空格如 -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 命令解析選項和參數(shù)

#優(yōu)點:可在參數(shù)中包含空格如:-c "earth moon"

# 選項字母和參數(shù)值之間可以沒有空格如:-bdog

# 可將未定義的選項綁定到?輸出

# Unknow option: ?

nomal_opts_act -a -b dog -c earth -d -f param1 param2

getopts_act -a -b dog -c "earth moon" -d -f param1 param2

getopt_act -a -b dog -c earth -d -f param1 param2

更多信息請查看IT技術專欄

更多信息請查看網(wǎng)絡編程
易賢網(wǎng)手機網(wǎng)站地址:Shell腳本傳遞參數(shù)的3種方法比較

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網(wǎng)