linux shell指令碼通過引數名傳遞引數值

2021-09-08 18:47:06 字數 1325 閱讀 9994

平常在寫shell指令碼都是用$1,$2....這種方式來接收引數,然而這種接收引數的方式不但容易忘記且不易於理解和維護。linux常用的命令都可指定引數名和引數值,然而我們怎樣才能給自己的shell指令碼也採用引數名和引數值這樣的方式來獲取引數值呢?而不是通過$1,$2這種方式進行獲取。下面的例子定義了短引數名和長引數名兩種獲取引數值的方式。其實是根據getopt提供的特性進行整理而來。

#!/bin/sh

#說明show_usage="

args: [-l , -r , -b , -w]\

[--local-repository=, --repository-url=, --backup-dir=, --webdir=]"

#引數# 本地倉庫目錄

opt_localrepo=""

# git倉庫url

opt_url=""

# 備份目錄

opt_backupdir=""

# web目錄

opt_webdir=""

getopt_args=`getopt -o l:r:b:w: -al local-repository:,repository-url:,backup-dir:,webdir: -- "$@"

`eval set -- "

$getopt_args

"#獲取引數

while [ -n "$1"

]docase"$1

"in-l|--local-repository) opt_localrepo=$2; shift2;;

-r|--repository-url) opt_url=$2; shift2;;

-b|--backup-dir) opt_backupdir=$2; shift2;;

-w|--webdir) opt_webdir=$2; shift2;;

--) break ;;

*) echo $1,$2

,$show_usage; break ;;

esac

done

if [[ -z $opt_localrepo || -z $opt_url || -z $opt_backupdir || -z $opt_webdir ]]; then

echo

$show_usage

echo

"opt_localrepo: $opt_localrepo , opt_url: $opt_url , opt_backupdir: $opt_backupdir , opt_webdir: $opt_webdir

"exit

0fi

通過這種方式進行引數值的獲取,更易於理解和維護。

linux shell指令碼通過引數名傳遞引數值

平常在寫shell指令碼都是用 1,2.這種方式來接收引數,然而這種接收引數的方式不但容易忘記且不易於理解和維護。linux常用的命令都可指定引數名和引數值,然而我們怎樣才能給自己的shell指令碼也採用引數名和引數值這樣的方式來獲取引數值呢?而不是通過 1,2這種方式進行獲取。下面的例子定義了短引...

Linux Shell指令碼基礎

shell指令碼在處理自動迴圈或大的任務方面可節省大量時間,且功能強大。任何指令碼都可能有注釋,加注釋需要此行的第乙個字元為 直譯器對此行不予解釋。指令碼不是複雜的程式,它是按行解釋的。指令碼第一行總是以 bin sh開始,這段指令碼通知shell使用系統上的 bourne shell直譯器。指令碼...

linux shell指令碼犯錯

指令碼裡犯了錯 oracle it shell value 1 oracle it shell value 1 bash value command not found oracle it shell value 3 bash value command not found oracle it sh...