1. 程式人生 > >Linux基礎--shell指令碼(5)

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
        }