Shell指令碼學習筆記(五)–函數

來源:互聯網
上載者:User

函數

Bash調用函數不會開啟新的子shell,會在現有的shell環境中執行該函數。

函數的文法形式:

function 函數名稱()
{
命令地區
}

函數名稱()
{
命令地區
}

function 函數名稱
{
命令地區
}

調用:函數名 參數1 參數2 ....

FUNCNAME變數,值的內容是函數名

取消函數定義:unset -f 函數名

return指令  $?傳回值

作用範圍:函數僅在定義的shell環境中有效,如果要傳遞函數給子shell環境使用,可使用內建命令export和-f選項:export -f 函數名
如果沒有特別設定變數的屬性,那麼在script中自訂的變數稱為全域變數,作用範圍在整個script檔案中
內建命令local,設定變數屬性為私人
主程式中,盡量不要用傳入函數的全域變數的值來控制函數執行後的程式流程

位置參數
含義


移動位置參數:shift n
指定位置參數:set命令 

例子

#!/bin/bash

declare -i i=0
set 61 62 63 64 65 66 67 68 69 70

for p in $@
do
((i++))
echo "第 $i 個位置參數 \$$i=$p"
done


運用位置參數傳遞參數值給函數時,原有的位置參數會被儲存,其內含值不會受到影響
取用命令列的選項和參數:
getopts 選項行 選項變數
選項行由各選項的單一字元組成,getopts由命令列取得選項,把它放入選項變數中,如果該選項需要額外的參數,參數值會放入OPTARG變數中
例子

#!/bin/bash

while getopts u:ah opt
do
case $opt in
u)
echo "提供了選項u和參數:$OPTARG";;
a)
echo "提供了選項a";;
h)
echo "提供了選項h";;
*)
;;
esac
done


建立函數庫

遞迴函式

例子

#!/bin/bash

function factor_in () {
local tmp
local tmp1

tmp="$1"

if [ $tmp -eq 1 ] ; then
echo -n " 1 "
r=1
else
echo -n " $tmp * "
tmp1=$tmp
tmp=$(($tmp-1))
factor_in $tmp
r=$(($tmp*$r))
fi
}

if [ $# -ne 1 ] ; then
echo "使用方法:$0 正整數"
exit 1
fi

echo
echo -n $1"! = "
factor_in $1
echo -n "= $r"
echo

結果

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.