平常在寫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...