Linux基礎--shell指令碼(5)
================================
while 迴圈
init
while [ con ]
do
cmd
add
done
while 巢狀
while [ con ]
do
while [ con ]
do
.....
done
.....
done
練習:
1:
1 + 2 + 3 + ... + 100
2:
實現99乘法表
3 :
012345678
####****\n
9
####****
####****
####****
一個迴圈 每次列印一個字元
死迴圈
1 必須有延遲
2 必須有退出條件
break : 退出整個迴圈,只對當前的迴圈起作用
continue: 退出本次迴圈,對當前迴圈
homework:
1 實現死迴圈,使用者檢測服務狀態 如果服務為啟動,則啟動服務,如果啟動,則不關心
nfs
2 實現百元百雞
公雞 5元1只
母雞 3元1只
小雞 1元3只
問共有多少種組合
放在後臺執行
./filename &
檢視後臺程序
ps -ef
程序:就是一段可執行的程式碼,並放在記憶體中執行
init 程序 祖先程序 所有的程序都是由1號程序間接或者直接建立
殺死程序:
kill -9 pid
管道命令:|
前一個命令輸出作為後一個命令輸入
文字操作命令
grep : 查詢匹配關鍵字
案例:
查詢匹配字串
[[email protected] sh]# cat /etc/passwd | grep root 完全匹配
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
表示顯示行號
[[email protected] sh]# cat /etc/passwd | grep -n root 顯示行號
1:root:x:0:0:root:/root:/bin/bash
12:operator:x:11:0:operator:/root:/sbin/nologin
表示不去分大小寫顯示
[[email protected] test]# cat test | grep -i root
al;dsjrootkflk
lkjdsflkRootljfd
表示查詢匹配單詞
[[email protected] test]# cat test | grep -w root
kjfd root kjfjdk
表示匹配不含有root字串的行
[[email protected] test]# cat test | grep -v root
flkjsdkf
lkjdsflkRootljfd
cut : 切割
-d : 表示分割符
-f : 表示欄位
案例
cut -d : -f 1 passwd 表示取出第一列
cat passwd | cut -d: -f 1,7 表示取出第一列和第七列
sort : 排序 預設升序
-r : 表示絳序
wc : 統計
-l : 表示統計行
-w : 表示統計單詞
-c : 表示統計字元
uniq : 重複的行只顯示一行
練習:
統計/etc/passwd 有多少中shell
[[email protected] sh]# cat /etc/passwd | cut -d : -f 7 | sort | uniq | grep -v ^$ | wc -l
5
======================================
函式
format :
funname (){
cmd
}
or
function funname (){
cmd
}