Shell之function函數(shù)的定義及調(diào)用示例
function函數(shù)的定義及調(diào)用
將一些相對獨(dú)立的代碼變成函數(shù),可以提高程序的可讀性和重用性。避免重復(fù)編寫大量相同的代碼
function函數(shù)的定義
方法一:
function_name () { statement1 statement2 .... statementn }
方法二:
function function_name() { statement1 statement2 .... statementn }
function函數(shù)的調(diào)用【位置傳參】
#!/usr/bash/env bash #!/bin/bash #解釋器選第一個(gè)或第二個(gè) factorial() { value=1 for((i=1;i<=$1;i++)) do # ? ? ? value=$[$value * $i] # ? ? ? value=$(($value*$i)) ?等價(jià)于 ? value=$(($value * $i)) ? ? ? ? let value*=$i ? ? ? #等價(jià)于 ?let value=$value*$i ?不等價(jià)于 let value=$value * $i done echo "$1的階乘是: $value" } #調(diào)用函數(shù)并傳參 factorial $1 //測試傳參 [root@mysql-master /soft/scripts]# sh function1.sh 5 5的階乘是: 120 [root@mysql-master /soft/scripts]#?
函數(shù)使用return返回值【位置傳參】
在Shell中,return語句只能返回某個(gè)0-255之間的整數(shù)值,如果超出這個(gè)范圍就會(huì)返回錯(cuò)誤的結(jié)果。在Shell中還有一種更優(yōu)雅的方法幫助用戶來獲得函數(shù)執(zhí)行后的某個(gè)結(jié)果,那就是使用echo,例如上例。
#! /bin/bash function sum() { ? returnValue=$(( $1 + $2 )) ? return $Value } sum 16 4 echo $? //測試 [root@mysql-master /soft/scripts]# sh sum.sh? 20 //用echo返回不在0-255范圍的結(jié)果 #! /bin/bash function length() { ? str=$1 ? result=0 ? if [ "$str" != "" ] ; then ? ? ? result=${#str} ? fi ? echo "$result" } len=`length "abc123"` echo "The string's length is $len " //測試 [root@mysql-master /soft/scripts]# sh length.sh ? The string's length is 6?
函數(shù)的調(diào)用【數(shù)組傳參】
#!/bin/bash #數(shù)組num num=(1 2 3 4 5 6) array() { ? ? ? ? local value=1 ? ? ? #加local表示value是局部參數(shù),不影響函數(shù)外的同名參數(shù) ? ? ? ? for i in $@ ? ? ? ? #所有的參數(shù){1..6} ? ? ? ? do ? ? ? ? ? ? ? ? let value*=$i ? ? ? ? done ? ? ? ? echo "$value" } array ${num[@]} //測試 [root@mysql-master /soft/scripts]# sh function2.sh? 720 ####傳入數(shù)組參數(shù),輸出數(shù)組參數(shù)#### #!/bin/bash num=(1 2 3) num2=(3 4 5) array() { ? ? ? ? local newarr=($@) ? ? ? ? for((i=0;i<$#;i++)) ? #或者寫成for i in $@;do;outarr[j++]=$[$i*3];done ? ? ? ? do ? ? ? ? ? ? ? ? outarr[$i]=$(( ${newarr[$i]} * 3 )) ? ? ? ? done ? ? ? ? echo "${outarr[@]}" } reslut=`array ${num[*]}` echo $reslut reslut2=`array ${num2[*]}` echo $reslut2 //測試 [root@mysql-master /soft/scripts]# sh ?function3.sh? 3 6 9 9 12 15
到此這篇關(guān)于Shell之function函數(shù)的定義及調(diào)用示例的文章就介紹到這了,更多相關(guān)Shell function函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
linux shell實(shí)現(xiàn)轉(zhuǎn)換輸入日期的格式
對于用戶輸入日期的合法性檢驗(yàn),是個(gè)很重要的問題,這個(gè)例子是簡單得取得用戶輸入的日期,并轉(zhuǎn)換為相應(yīng)的格式,但不完美,原因請看后文2016-08-08Shell中的循環(huán)語句for、while、until實(shí)例講解
這篇文章主要介紹了Shell中的循環(huán)語句for、while、until實(shí)例講解,簡單清晰明了,非常不錯(cuò)的教程,需要的朋友可以參考下2014-06-06shell腳本實(shí)現(xiàn)同時(shí)多臺(tái)遠(yuǎn)程主機(jī)執(zhí)行命令的代碼分享
這篇文章主要給大家介紹了關(guān)于shell腳本實(shí)現(xiàn)同時(shí)多臺(tái)遠(yuǎn)程主機(jī)執(zhí)行命令的方法,文中給出了詳細(xì)的代碼示例,相信對大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。2017-03-03CCKiller:Linux輕量級(jí)CC攻擊防御工具,秒級(jí)檢查、自動(dòng)拉黑和釋放
這篇文章主要介紹了CCKiller:Linux輕量級(jí)CC攻擊防御工具,秒級(jí)檢查、自動(dòng)拉黑和釋放,需要的朋友可以參考下2016-02-02Shell腳本查看進(jìn)程內(nèi)存真實(shí)占用情況
這篇文章主要介紹了Shell腳本查看進(jìn)程內(nèi)存真實(shí)占用情況,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-12-12