中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

泰安網(wǎng)站建設(shè)538sw云優(yōu)化軟件

泰安網(wǎng)站建設(shè)538sw,云優(yōu)化軟件,南陽(yáng) 網(wǎng)站建設(shè),梓潼移動(dòng)網(wǎng)站建設(shè)文章目錄 一、函數(shù)的定義1.1 shell函數(shù):1.2函數(shù)如何定義 二、函數(shù)的返回值三、函數(shù)的傳參四、函數(shù)變量的作用范圍五、函數(shù)的遞歸六、函數(shù)庫(kù) 一、函數(shù)的定義 1.1 shell函數(shù): 使用函數(shù)可以避免代碼重復(fù)使用函數(shù)可以將大的工程分割為若干小的功能模塊,代碼的可讀性更…

文章目錄

  • 一、函數(shù)的定義
    • 1.1 shell函數(shù):
    • 1.2函數(shù)如何定義
  • 二、函數(shù)的返回值
  • 三、函數(shù)的傳參
  • 四、函數(shù)變量的作用范圍
  • 五、函數(shù)的遞歸
  • 六、函數(shù)庫(kù)

一、函數(shù)的定義

1.1 shell函數(shù):

  • 使用函數(shù)可以避免代碼重復(fù)
  • 使用函數(shù)可以將大的工程分割為若干小的功能模塊,代碼的可讀性更強(qiáng)

1.2函數(shù)如何定義

法一:
[function] 函數(shù)名 (){命令序列[return x]              
}法二:
函數(shù)名(){命令序列
}

二、函數(shù)的返回值

1、在函數(shù)內(nèi)用return退出函數(shù)并返回函數(shù)的值,在函數(shù)外用echo $?獲取返回值,注:返回值的范圍只能在0~255,超過部分需除以256取余

編寫一個(gè)腳本查看他的返回?cái)?shù)
在這里插入圖片描述

執(zhí)行腳本

在這里插入圖片描述
可以看出$?的返回值是有上限的,返回值的范圍只能在0~255,超過部分需除以256取余

2、在函數(shù)內(nèi)用echo輸出值,在函數(shù)體外可用變量=$(函數(shù)名)獲取函數(shù)的返回值

編寫一個(gè)腳本

在這里插入圖片描述

執(zhí)行腳本

在這里插入圖片描述

可以看出相較于$?沒有取值的范圍。

三、函數(shù)的傳參

在Shell中,調(diào)用函數(shù)時(shí)可以向其傳遞參數(shù)。在函數(shù)體內(nèi)部,通過 $n 的形式來獲取參數(shù)的值,例如,$1表示第一個(gè)參數(shù),$2表示第二個(gè)參數(shù)…即使用位置參數(shù)來實(shí)現(xiàn)參數(shù)傳遞。

示例:

在這里插入圖片描述

結(jié)果:

在這里插入圖片描述

示例:

在這里插入圖片描述

結(jié)果:

在這里插入圖片描述

在這里插入圖片描述

函數(shù)體內(nèi)部的$1 $2代表的是調(diào)用函數(shù)時(shí),函數(shù)后面跟的位置參數(shù)
函數(shù)體外的$1 $2代表的是執(zhí)行腳本時(shí),腳本后面跟的位置參數(shù)

在這里插入圖片描述

在函數(shù)體內(nèi)部的$#代表調(diào)用函數(shù)時(shí),函數(shù)后面跟的參數(shù)個(gè)數(shù)
在函數(shù)體內(nèi)部的$@ $*代表調(diào)用函數(shù)時(shí),函數(shù)后面跟的所有參數(shù)
在函數(shù)體外時(shí),$#代表腳本后面跟的參數(shù)個(gè)數(shù)
在函數(shù)體外時(shí),$@ $*代表腳本后面跟的所有參數(shù)

四、函數(shù)變量的作用范圍

1、函數(shù)在Shell腳本中僅在當(dāng)前腳本Shell環(huán)境中有效(使用source/. 執(zhí)行腳本,也會(huì)影響系統(tǒng)的當(dāng)前Shell環(huán)境)
2、Shell腳本中變量默認(rèn)全局有效
3、將變量限定在函數(shù)內(nèi)部使用local命令
4、系統(tǒng)Shell環(huán)境>>腳本Shell環(huán)境>>函數(shù)Shell環(huán)境

示例一:

[root@localhost ~]# vim test5.sh
#!/bin/bash
myfun () {echo $namename=fengchuecho $name
}
name=wolong
myfun
echo $name
[root@localhost ~]# sh test5.sh
wolong
fengchu
fengchu

在這里插入圖片描述

實(shí)例二:

[root@localhost ~]# vim test5.sh
#!/bin/bash
myfun () {echo $namelocal name=fengchuecho $name
}
name=wolong
myfun
echo $name
[root@localhost ~]# sh test5.sh
wolong
fengchu
wolong

在這里插入圖片描述

五、函數(shù)的遞歸

遞歸就是一個(gè)函數(shù)在它的函數(shù)體內(nèi)調(diào)用它自身。執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身,每調(diào)用一次就進(jìn)入新的一層。所以遞歸要有兩個(gè)基本要素,結(jié)束條件與遞推關(guān)系。

遞歸的兩個(gè)基本要素:
????1.邊界條件:確定遞歸到何時(shí)結(jié)束,也被稱為遞歸的出口
????2.遞歸所使用的模式:大問題分解成小問題。遞歸函數(shù)只有具有上述兩個(gè)條件,才能計(jì)算出結(jié)果。

示例一:求階乘

#!/bin/bash
fact() {
if [ $1 -eq 1 ]
thenecho 1
elselocal temp=$[$1-1]local res=$(fact $temp)echo $[$1 * $res]
fi
}
read -p "請(qǐng)輸入一個(gè)數(shù):" n
res=$(fact $n)
echo $res
[root@localhost opt]# sh digui.sh
請(qǐng)輸入一個(gè)數(shù):5
120
[root@localhost opt]# sh digui.sh
請(qǐng)輸入一個(gè)數(shù):6
720

在這里插入圖片描述

在這里插入圖片描述

示例二:使用遞歸查詢目錄
使用函數(shù)遞歸目錄/var/log,如果是文件直接輸出文件名,如果是目錄則輸出目錄名且輸出此目錄下的所有目錄和文件名

[root@localhost opt]# vim digui2.sh
#!/bin/bash
list () {
for f in $(ls $1)
doif [ -d "$1/$f" ]thenecho "$2這是目錄$f"list "$1/$f" " $2"elseecho "$2這是文件$f"fi
done
}
list "/opt" " "
[root@localhost opt]# sh digui2.sh這是目錄aa這是目錄bb這是目錄cc這是目錄dd這是文件123.txt這是文件digui2.sh這是文件digui.sh這是目錄rh這是文件test2.sh這是文件test3.sh這是文件test4.sh這是文件test.sh

在這里插入圖片描述

在這里插入圖片描述

六、函數(shù)庫(kù)

如果我們能擁有,或者編寫過很多有價(jià)值的函數(shù)(能夠具體實(shí)現(xiàn)某一功能的那種函數(shù)),我們?cè)谙脒\(yùn)用的時(shí)候希望能夠跨文件調(diào)用,這些在Linux中shell腳本也能實(shí)現(xiàn),只要進(jìn)行函數(shù)庫(kù)文件的搭建,后期就能在編寫腳本時(shí)進(jìn)行直接調(diào)用

  • 函數(shù)庫(kù)所存文件為普通文件即可,但是函數(shù)的格式一定要規(guī)范,有能傳參的設(shè)置。

  • 后面進(jìn)行調(diào)用時(shí)可以通過 “.”和“source”來進(jìn)行跨文件調(diào)用

創(chuàng)建一個(gè)函數(shù)庫(kù)

[root@localhost opt]# vim ku.sh
#!/bin/bash
jiafa(){echo $[$1 + $2]
}jianfa(){echo $[$1 - $2]
}chengfa(){echo $[$1 * $2]
}chufa(){if [ $2 -eq 0 ]thenecho "除數(shù)不可為0"elseecho $[$1 / $2]fi
}fact(){if [ $1 -eq 1 ];thenecho 1elif [ $1 -gt 1 ]thenlocal tmp=$[$1 - 1]local res=$(fact $tmp)echo $[$1 * res]elseecho "輸入的值無效,請(qǐng)輸入大于等于1的整數(shù)!"fi
}

在這里插入圖片描述

在其他的shell腳本中執(zhí)行函數(shù)


[root@localhost opt]# vim test6.sh
#!/bin/bash
. /opt/ku.shread -p "請(qǐng)輸入一個(gè)正整數(shù):" num1
read -p "請(qǐng)輸入二個(gè)正整數(shù):" num2res1=$(jiafa $num1 $num2)
res2=$(jianfa $num1 $num2)
res3=$(chengfa $num1 $num2)
res4=$(chufa $num1 $num2)
res5=$(fact $num1 $num2)echo "加法的結(jié)果為:$res1"
echo "減法的結(jié)果為:$res2"
echo "乘法的結(jié)果為:$res3"
echo "除法的結(jié)果為:$res4"
echo "階乘的結(jié)果為:$res5"
[root@localhost opt]# sh test6.sh
請(qǐng)輸入一個(gè)正整數(shù):5
請(qǐng)輸入二個(gè)正整數(shù):2
加法的結(jié)果為:7
減法的結(jié)果為:3
乘法的結(jié)果為:10
除法的結(jié)果為:2
階乘的結(jié)果為:120

在這里插入圖片描述

在這里插入圖片描述

http://www.risenshineclean.com/news/43621.html

相關(guān)文章:

  • 企業(yè)網(wǎng)站建設(shè)457國(guó)際新聞 軍事
  • 贛州網(wǎng)站建設(shè)優(yōu)化服務(wù)優(yōu)化搜索引擎
  • 綿陽(yáng)低價(jià)網(wǎng)站建設(shè)聊城seo培訓(xùn)
  • 網(wǎng)站開發(fā)公司杭州網(wǎng)站建設(shè)今日頭條新聞手機(jī)版
  • 做網(wǎng)站制作云南網(wǎng)站seo服務(wù)
  • 黑龍江專業(yè)建站西安seo推廣公司
  • 政府網(wǎng)站與門戶網(wǎng)站的區(qū)別論壇推廣技巧
  • 怎么做網(wǎng)站效果圖網(wǎng)絡(luò)營(yíng)銷自學(xué)網(wǎng)站
  • 做校園文化的網(wǎng)站市場(chǎng)營(yíng)銷手段有哪四種
  • 網(wǎng)站運(yùn)營(yíng)優(yōu)化方案優(yōu)秀軟文營(yíng)銷案例
  • 網(wǎng)站建設(shè)規(guī)劃書的目的南昌seo排名收費(fèi)
  • 網(wǎng)站怎么自己做優(yōu)化小說網(wǎng)站排名前十
  • wordpress獲取菜單欄優(yōu)化大師好用嗎
  • 好建網(wǎng)站今日足球比賽預(yù)測(cè)推薦分析
  • wordpress 多站點(diǎn)遷移軟文寫作模板
  • 在哪個(gè)網(wǎng)站可以做行測(cè)題長(zhǎng)春百度推廣電話
  • 合肥高端網(wǎng)站建設(shè)設(shè)計(jì)免費(fèi)海報(bào)模板網(wǎng)站
  • 廈門SEO_廈門網(wǎng)站建設(shè)長(zhǎng)春網(wǎng)站關(guān)鍵詞排名
  • 企業(yè)網(wǎng)站的推廣形式有哪些中國(guó)軟文網(wǎng)官網(wǎng)
  • 有沒有做網(wǎng)站的軟件百度快照是什么
  • 貸款超市網(wǎng)站開發(fā)sem優(yōu)化服務(wù)公司
  • 如何自己做網(wǎng)站知識(shí)網(wǎng)絡(luò)營(yíng)銷類型
  • 廣州專業(yè)網(wǎng)站建設(shè)性價(jià)比高google學(xué)術(shù)搜索
  • 佛山建站公司哪家好騰訊云域名注冊(cè)
  • 畢業(yè)設(shè)計(jì)做網(wǎng)站lowseo查詢軟件
  • 河南網(wǎng)站建設(shè)價(jià)位柳州網(wǎng)站建設(shè)哪里有
  • 自己做網(wǎng)站申請(qǐng)域名百度廣告電話號(hào)碼是多少
  • 網(wǎng)站代碼優(yōu)化方法廣州信息流推廣公司排名
  • 空濾網(wǎng)站怎么做百度網(wǎng)站排名規(guī)則
  • 企業(yè)網(wǎng)站優(yōu)化方案模板免費(fèi)發(fā)布廣告