国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux shell編程學習筆記24:函數定義和使用

這篇具有很好參考價值的文章主要介紹了Linux shell編程學習筆記24:函數定義和使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

*20231113?補充了實例使用for循環(huán)來簡化代碼的內容

為了實現模塊化設計和代碼重用,很多編程語言支持函數或過程,Linux shell也支持函數定義和調用。

Linux shell中的函數與其它編程語言很多有相似之處,也有自己獨特之處。

1?函數的定義

1.1 標準格式

function?函數名()
{
? ? 語句或命令1

? ? ?……

? ? 語句或命令n
??? [return?返回值]
}

其中:

  • function是 Shell 中的關鍵字,專門用來定義函數;
  • 由{ }包圍的部分稱為函數體,調用一個函數,實際上就是執(zhí)行函數體中的代碼。
  • return 是 Shell 關鍵字,專門用在函數中返回一個值;如果不用返回值,這一句也可以不寫。

這個格式是不是與JavaScript的函數定義格式很像?
?

1.2?簡化格式

在實際實用中,還有兩種簡化格式:

1.2.1? 簡化格式1——省略function關鍵字

我們可以把function關鍵字省略不寫,就有了下面這種簡化格式:

函數名()
{
? ? 語句或命令1

? ? ?……

? ? 語句或命令n
??? [return?返回值]
}

1.2.2? 簡化格式2——省略函數名后面的小括號

如果我們寫了 function 關鍵字,也可以省略函數名后面的小括號,就有了下面這種簡化格式:

function?函數名
{
? ? 語句或命令1

? ? ?……

? ? 語句或命令n
??? [return?返回值]
}

1.3?建議

建議使用1.1的標準格式,保持與其它編程語言的書寫兼容性。

2?函數的參數

2.1?函數在定義時不能指明參數

盡管Linux Linux Shell中的函數定義格式與JavaScript的函數定義格式很像,但它也在有自己的特別之處,那就是函數在定義時不能指明參數,但是在調用時卻可以傳遞參數,并且給它傳遞什么參數它就接收什么參數。

2.2?函數體內使用參數信息的方式

函數體內腳本內獲取參數的格式為:

${n}

其中n?代表一個數字,0為執(zhí)行腳本的命令行命令, 1 為執(zhí)行腳本的第一個參數,2 為執(zhí)行腳本的第二個參數,依此類推……

  • 當n > 10時,可以省略{},簡寫為$n。
  • 當n>=10時,務必使用${n}

除此之外,還有幾個特殊的參數處理信息:

參數處理 說明
$# 傳遞到腳本的參數個數
$* 以一個單字符串顯示所有向腳本傳遞的參數。
如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有參數。
$@ 與$*相同,但是使用時加引號,并在引號中返回每個參數。
如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有參數。
$$ 腳本運行的當前進程ID號
$! 后臺運行的最后一個進程的ID號
$- 顯示Shell使用的當前選項
$? 顯示最后命令的退出狀態(tài)。0表示沒有錯誤,其他任何值表明有錯誤。

3?函數的執(zhí)行(調用)

格式:

函數名?[參數1?參數2 ……?參數n]

與JavaScript一樣,Linux Shell?對函數定義和調用的順序不做限制,你可以將定義放在調用的前面,也可以反過來,將定義放在調用的后面。

但是,與JavaScript不同的地方:

  • 函數名后面不用()。
  • 如果要傳遞參數,那么參數以空格分隔。

4.函數定義和調用實例

我們定義一個函數x:

function x()
{
	echo cmd: $0; 
	echo param number:$#; 
	echo they are $@; 
	echo 1-$1; 
	echo 2-${2}; 
	echo 3-$3; 
	echo 4-$4; 
	echo 5-$5; 
	echo 6-$6;
	echo 7-$7; 
	echo 8-$8;
	echo 9-$9;
	echo 10-${10};
	return 0;
};

在函數體中:

  • 我們用echo命令首先顯示命令行命令($0)
  • 然后顯示命令行參數個數($#)
  • 接著我們顯示所有的命令行參數($@)
  • 然后我們逐個顯示每個參數
  • 最后我們用return語句返一個值0

4.1 bash中

csdn @edu bash $ function x() {echo cmd: $0; echo param number:$#; echo they are $@; echo 1-$1; echo 2-${2}; echo 3-$3; echo 4-$4; echo 5-$5; echo 6-$6;echo 7-$7; echo 8-$8; echo 9-$9; echo 10-${10}; return 0;}; x a1 b2 c3 d4 e5 f6 h7 i8 j9 k10; echo exit code: $?
bash: syntax error near unexpected token `{echo'
csdn @edu bash $ function x() { echo cmd: $0; echo param number:$#; echo they are $@; echo 1-$1; echo 2-${2}; echo 3-$3; echo 4-$4; echo 5-$5; echo 6-$6;echo 7-$7; echo 8-$8; echo 9-$9; echo 10-${10}; return 0;}; x a1 b2 c3 d4 e5 f6 h7 i8 j9 k10; echo exit code: $?
cmd: bash
param number:10
they are a1 b2 c3 d4 e5 f6 h7 i8 j9 k10
1-a1
2-b2
3-c3
4-d4
5-e5
6-f6
7-h7
8-i8
9-j9
10-k10
exit code: 0
csdn @edu bash $?

linux函數定義,Linux世界,麒麟操作系統,系統安全,linux,學習筆記,Linux shell,shell腳本,命令行參數,函數定義,函數調用

在命令行中,我們先定義了函數x,然后調用函數x并參遞了參數10個參數:

x a1 b2 c3 d4 e5 f6 h7 i8 j9 k10

最后我們使用命令

echo exit code: $?

顯示函數x的返回值為0

在bash的命令行中,函數體開始的{和后面的命令或語句要用空格分隔。

4.2 zsh中

csdn @ edu zsh $ function x() {echo cmd: $0; echo param number:$#; echo they are $@; echo 1-$1; echo 2-${2}; echo 3-$3; echo 4-$4; echo 5-$5; echo 6-$6;echo 7-$7; echo 8-$8; echo 9-$9; echo 10-${10}; return 0;}; x a1 b2 c3 d4 e5 f6 h7 i8 j9 k10; echo exit code: $?
cmd: x
param number:10
they are a1 b2 c3 d4 e5 f6 h7 i8 j9 k10
1-a1
2-b2
3-c3
4-d4
5-e5
6-f6
7-h7
8-i8
9-j9
10-k10
exit code: 0

linux函數定義,Linux世界,麒麟操作系統,系統安全,linux,學習筆記,Linux shell,shell腳本,命令行參數,函數定義,函數調用

代碼跟在bash中是一樣的,但是zsh的命令行中不要求函數體開始的{和后面的命令或語句用空格分隔。

4.3?使用for循環(huán)來簡化代碼

上面的實例中,要逐個輸出參數,我們還可以使用for語句來進行簡化。

function x()
{
	echo cmd: $0; 
	echo param number:$#; 
	echo they are $@; 
	j=1;
	for i in $@
	do
  		echo $j-$i; 
		((j++));
	done
	return 0;
};

4.3.1?在bash中

csdn @ edu bash $ function x(){ echo cmd: $0; echo param number:$#; echo they are $@; j=1; for i in $@; do echo $j-$i; ((j++));done;return 0; };x a1 b2 c3 d4 e5 f6 h7 i8 j9 k10; echo exit code: $?
cmd: bash
param number:10
they are a1 b2 c3 d4 e5 f6 h7 i8 j9 k10
1-a1
2-b2
3-c3
4-d4
5-e5
6-f6
7-h7
8-i8
9-j9
10-k10
exit code: 0

linux函數定義,Linux世界,麒麟操作系統,系統安全,linux,學習筆記,Linux shell,shell腳本,命令行參數,函數定義,函數調用

4.3.2 在zsh中

csdn @ edu zsh $ function x(){ echo cmd: $0; echo param number:$#; echo they are $@; j=1; for i in $@; do echo $j-$i; ((j++));done;return 0; };x a1 b2 c3 d4 e5 f6 h7 i8 j9 k10; echo exit code: $?
cmd: x
param number:10
they are a1 b2 c3 d4 e5 f6 h7 i8 j9 k10
1-a1
2-b2
3-c3
4-d4
5-e5
6-f6
7-h7
8-i8
9-j9
10-k10
exit code: 0

linux函數定義,Linux世界,麒麟操作系統,系統安全,linux,學習筆記,Linux shell,shell腳本,命令行參數,函數定義,函數調用文章來源地址http://www.zghlxwxcb.cn/news/detail-751811.html

到了這里,關于Linux shell編程學習筆記24:函數定義和使用的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Linux shell編程學習筆記29:shell自帶的 腳本調試 選項

    Linux shell編程學習筆記29:shell自帶的 腳本調試 選項

    Linux shell腳本的調試方法比較多,上次我們探討和測試了shell內建命令set所提供的一些調試選項,其實 shell 本身也提供了一些調試選項。我們以bash為例來看看。 purleEndurer @ csdn ~ $ bash --help GNU bash, version 4.2.46(2)-release-(x86_64-redhat-linux-gnu) Usage: ?bash [GNU long option] [option] ... ? ? ?

    2024年02月04日
    瀏覽(16)
  • Linux shell編程學習筆記40:stat命令

    Linux shell編程學習筆記40:stat命令

    “程序員必備的面試技巧,就像是編寫一段完美的代碼一樣重要。在面試戰(zhàn)場上,我們需要像忍者一樣靈活,像偵探一樣聰明,還要像無敵鐵金剛一樣堅定。只有掌握了這些技巧,我們才能在面試的舞臺上閃耀光芒,成為那個令HR們心動的程序猿!” 目錄 0?前言 1?DOS、Wind

    2024年01月19日
    瀏覽(31)
  • Linux shell編程學習筆記36:read命令

    Linux shell編程學習筆記36:read命令

    ?*更新日志? *2023-12-18 1.根據[美] 威廉·肖特斯 (Willian?shotts)所著《Linux命令行大全(第2版)》 ? ? ? ? ? ? ? ? ? ? ? ? 更新了-e、-i、-r選項的說明 ? ? ? ? ? ? ? ? ? ? ? 2.更新了 2.8 的實例,增加了gif動圖 ? ? ? ? ? ? ? ? ? ? ? 3.補充了-i的應用實例 2.12 目錄 目錄

    2024年02月04日
    瀏覽(24)
  • Linux shell編程學習筆記33:type 命令

    Linux shell編程學習筆記33:type 命令

    ?目錄 0?引言 1 type?命令的功能和格式 1.1?type命令的功能 1.2 type?命令的格式 2 type命令用法實例 2.1用type命令查看shell內置命令(以echo命令為例) 2.2?用type命令查看別名(以ls命令為例) 2.3 用type命令同時查看shell內置命令和別名(以echo和ls命令為例) 2.4?用type命令查看外部

    2024年02月03日
    瀏覽(24)
  • Linux shell編程學習筆記39:df命令

    Linux shell編程學習筆記39:df命令

    0 前言 1? df命令的功能、格式和選項說明 1.1 df命令的功能 1.2 df命令的格式 1.3 df命令選項說明? 2 df命令使用實例? 2.1? df:顯示主要文件系統信息 2.2 df -a:顯示所有文件系統信息 2.3 df?-t[=]TYPE或--type[=]TYPE:顯示TYPE指定類型的文件系統信息 2.4?df --total:追加顯示統計信息 2

    2024年01月16日
    瀏覽(28)
  • Linux shell編程學習筆記41:lsblk命令

    Linux shell編程學習筆記41:lsblk命令

    邊緣計算面臨著數據安全與隱私保護、網絡穩(wěn)定性等挑戰(zhàn),但同時也帶來了更強的實時性和本地處理能力,為企業(yè)降低了成本和壓力,提高了數據處理效率。因此,邊緣計算既帶來了挑戰(zhàn)也帶來了機遇,需要我們不斷地研究 前幾節(jié)學習我們均涉及到磁盤和文件存儲,今天我們

    2024年01月24日
    瀏覽(27)
  • Linux shell編程學習筆記47:lsof命令

    Linux shell編程學習筆記47:lsof命令

    今天國產電腦提示磁盤空間已耗盡,使用用df命令檢查文件系統情況,發(fā)現/dev/sda2已使用100%。 Linux shell編程學習筆記39:df命令 https://blog.csdn.net/Purpleendurer/article/details/135577571 于是開始清理磁盤空間。 第一步是查看已刪除、但空間卻沒有釋放的進程。 這里要用到 lsof命令。

    2024年04月27日
    瀏覽(16)
  • Linux shell編程學習筆記18:while循環(huán)語句

    Linux shell編程學習筆記18:while循環(huán)語句

    上回我們研究和探討了Linux shell編程中for 循環(huán)語句,與在C/C++中一樣,for 循環(huán)語句Linux shell編程中有很多靈活的用法。今天我們來研究和探討while循環(huán)語句。 我們繼續(xù)以for循環(huán)語句中的例子,計算 從1到10與2的乘積?并輸出。 1.在zsh命令行中 # csdn @ edu in ~ [20:35:57]? $ i=1; while

    2024年02月06日
    瀏覽(20)
  • Linux shell編程學習筆記17:for循環(huán)語句

    Linux shell編程學習筆記17:for循環(huán)語句

    Linux Shell 腳本編程和其他編程語言一樣,支持算數、關系、布爾、字符串、文件測試等多種運算,同樣也需要進行根據條件進行流程控制,提供了if、for、while、until等語句。? 之前我們探討了if語句,現在我們來探討for循環(huán)語句。 Linux Shell中的for語句十分靈活,格式多樣,我

    2024年02月06日
    瀏覽(26)
  • Linux shell編程學習筆記45:uname命令-獲取Linux系統信息

    Linux shell編程學習筆記45:uname命令-獲取Linux系統信息

    linux 有多個發(fā)行版本,不同的版本都有自己的版本號。 如何知道自己使用的Linux的系統信息呢? 使用uname命令、hostnamectl命令,或者通過查看/proc/version文件來了解這些信息。 我們先看看uname命令。 我們可以使用命令 uname --help命令 查看它的用法: purpleEndurer @ ?bash ~ $ uname --

    2024年04月10日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包