国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

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

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

文章目錄

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

一、函數(shù)的定義

1.1 shell函數(shù):

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

1.2函數(shù)如何定義

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

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

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

編寫一個腳本查看他的返回數(shù)
在這里插入圖片描述

執(zhí)行腳本

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

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

編寫一個腳本

在這里插入圖片描述

執(zhí)行腳本

在這里插入圖片描述

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

三、函數(shù)的傳參

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

示例:

在這里插入圖片描述

結(jié)果:

在這里插入圖片描述

示例:

在這里插入圖片描述

結(jié)果:

在這里插入圖片描述

在這里插入圖片描述

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

在這里插入圖片描述

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

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

1、函數(shù)在Shell腳本中僅在當前腳本Shell環(huán)境中有效(使用source/. 執(zhí)行腳本,也會影響系統(tǒng)的當前Shell環(huán)境)
2、Shell腳本中變量默認全局有效
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

在這里插入圖片描述

實例二:

[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ù)的遞歸

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

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

示例一:求階乘

#!/bin/bash
fact() {
if [ $1 -eq 1 ]
thenecho 1
elselocal temp=$[$1-1]local res=$(fact $temp)echo $[$1 * $res]
fi
}
read -p "請輸入一個數(shù):" n
res=$(fact $n)
echo $res
[root@localhost opt]# sh digui.sh
請輸入一個數(shù):5
120
[root@localhost opt]# sh digui.sh
請輸入一個數(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ù)庫

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

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

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

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

[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 "輸入的值無效,請輸入大于等于1的整數(shù)!"fi
}

在這里插入圖片描述

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


[root@localhost opt]# vim test6.sh
#!/bin/bash
. /opt/ku.shread -p "請輸入一個正整數(shù):" num1
read -p "請輸入二個正整數(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
請輸入一個正整數(shù):5
請輸入二個正整數(shù):2
加法的結(jié)果為:7
減法的結(jié)果為:3
乘法的結(jié)果為:10
除法的結(jié)果為:2
階乘的結(jié)果為:120

在這里插入圖片描述

在這里插入圖片描述

http://aloenet.com.cn/news/43621.html

相關(guān)文章:

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