向腳本傳遞參數就是用位置參數變量實現
傳遞給命令的參數稱為位置參數 ls /etc/var
Myscript.sh argu1 argu2 ….${10} ${11}…
引用方式 :$1就是引用整個腳本位置參數的第一個,第一個會自動保存在$1中
$2就是引用整個腳本位置參數的第二個,第二個會自動保存在$2中
….
輪替;
Shft [n]:一次輪替n個參數
上面例子的引申
練習
寫一個腳本,通過命令傳遞兩個文本文件路徑給腳本,計算其空白行數之和
特殊變量:
$0 :所執行的腳本文件路徑本身
$# :看傳了多少個參數
$* :所有參數,”ni” “wo” “ta”
$@ :所有參數,”ni wo ta “
練習,通過命令傳遞兩個文本文件路徑給腳本,計算
其空白行數之和,如果給的路徑小于兩個,提示:至少得輸入兩個路徑,并且退出
過程式編程語言的代碼執行順序:
順序執行:逐條執行,一個挨一個
選擇執行:每一種編程語言都會用到
代碼有一個分支:條件滿足時,才會執行
代碼有兩個或以上的分支:只會執行其中一個滿足條件的分支
循環執行
代碼片段(循環體)要執行0,1或多個來回
選擇執行:
(1)&& , ||
(2) if語句:可嵌套
(3)case語句:簡化多分枝的if語句
·單分支的if語句
if 測試條件; then (如果測試條件為真,那么就怎么怎么)(此時測試條件后面要加”;“或者不加“;”就把后面的then單獨換行寫
If-true代碼分支
fi 結束
·雙分支的if語句
if 測試條件; then
If-true條件為真時執行的分支,分支里可以有n個語句
else
If-false條件為假時的分支
· fi 結束
·多分枝的if語句(測試條件不光有真假,還有如果…如果…如果…否則)
if 測試條件1; then
條件1為真分支,代碼執行
elif 測試條件2; then
條件2為真分支
elif 測試條件3; then
條件3為真分支
…
elif 測試條件n; then
條件n為真分支
else
所有條件均不滿足時的分支
fi
注意:即便多個條件可能同時都能滿足,分支只會執行其中一個,哪個首先測試為真就執行哪個。如果第一個為真就執行第一個,后面的不考慮,如果所有都不為真,就執行else
注意:if語句可嵌套
練習: 單分支
通過參數傳遞一個用戶名給腳本,此用戶不存在時則添加之
練習:如果用戶不給參數,提示:要輸入信息,并給2的返回值
練習:雙分支
如果用戶存在,提示:用戶已經存在,否則添加
練習:多分枝
腳本參數傳遞一個文件路徑給腳本,判斷此文件的類型
練習:多分枝
1,腳本參數傳遞一個文件路徑給腳本,此參數為用戶名
根據其ID號來判斷用戶類型
0:管理員
1-499:系統用戶
500+:登錄用戶
2,寫一個腳本
(1)列出如下菜單給用戶
disk)show disks info
Mem)show memory info
Cpu )show cpu info
*)quit
(2)提示用戶給出自己的選擇,而后顯示對應其選擇的相應系統信息
練習:1,通過命令行給定兩個數字,輸出其中較大的數值
循環執行:將一段代碼重復執行0次,1次或多次
兩個關鍵要點
1,進入條件:什么時候執行,要不要執行,條件滿足時,才進入循環
2,退出條件:每一個循環都應該有退出條件,以有機會退出循環
Bash腳本的三種循環方式
1,for 2,while 3,until(2,3幾乎沒什么區別,除了進入和退出的條件是相反的)
For循環的兩種格式
1,遍歷列表
2,控制變量
遍歷列表:
for VARAIBLE in LIST;do
循環體
Done
進入條件:只要列表有可用元素,即可進入循環
退出條件:列表中的元素遍歷完成
LIST的生成方式
1,直接給出
2,整數列表
(a){start..end} 自動展開
(b) seq [start [step]] end
seq 10就是1-10
seq 5 10就是5-10
seq 1 2 10就是奇數列表 1 3 5 7 9
seq 2 2 10就是偶數列表 2 4 6 8 10
3,返回列表的命令,例如ls cat
4,glob(通配)
5,變量引用
$@ $*
…
在/tmp下創建10個臨時文件,叫f1到f10
求100以內所有正整數之和
原創文章,作者:wutianyou,如若轉載,請注明出處:http://www.www58058.com/34542