(二)shell中case語句、程序傳參、while


2.2.6.1、case語句
(1)shell中的case語句和C語言中的switch case語句作用一樣,格式有差異
(2)shell中的case語句天生沒有break,也不需要break,和C語言中的switch case不同。shell中的case默認就是匹配上哪個執行哪個,不會說執行完了還去執行后面的其他case(就好像shell中的case語言默認都帶了break)。

2.2.6.2、調用shell程序的傳參
(1)C語言中可以通過main函數的argc和argv給程序傳參(詳情參考《4.8.3.argc、argv與main函數的傳參》)
(2)shell程序本身也可以在調用時傳參給他。在shell程序內部使用傳參也是使用的一些特定符號來表示的,包括:
$#表示調用該shell時傳參的個數。($#計數時只考慮真正的參數個數)
$0、$1、$2·····則依次表示傳參的各個參數。

C語言:./a.out aa bb cc  argc = 4, argv[0] = ./a.out, argv[1]是第一個有效參數····

shell:source a.sh aa bb cc  $# = 3, $0是執行這個shell程序的解析程序的名字,$1是第一個有效參數的值,$2是第2個有效參數的值·····

注意:shell中的很多語法特性和C語言中是相同的,也有很多是不同的。所以大家學的越多越容易混淆(本質原因還是用的不熟悉,用的少),解決方案是:做筆記、作總結、多寫代碼經常用

2.2.6.3、while循環和case語言和傳參結合
(1)shell中的break關鍵字和C語言中意義相同(都是跳出)但是用法不同。因為shell中case語句默認不用break的,因此在shell中break只用於循環跳出。所以當while中內嵌case語句時,case中的break是跳出外層的while循環的,不是用來跳出case語句的。
(2)shell中的$# $1等內置變量的值不是不可變的,而是可以被改變,被shift指令改變。shift指令有點像左移運算符,把我們給shell程序的傳參左移了一個移出去了,原來的$2變成了新的$1,原來的$#少了1個。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM