溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell腳本編寫之初級版

發(fā)布時間:2020-08-10 15:57:37 來源:ITPUB博客 閱讀:145 作者:hz_ganwei 欄目:建站服務器
1.  shell腳本的執(zhí)行順序是從上而下的,面向過程。
2.  文件名稱格式: xxx.sh
3.  文件內(nèi)容的第一行: #!/bin/bash
4.  shell腳本就是將命令全部融合在一起
5.  定義變量
    shell腳本的變量是以:key=value 定義的,注意:=兩邊不能有空格
    靜態(tài)變量定義:a='www.ruozedata.com'    
    動態(tài)變量定義:b=`date`    #變量b是獲取當前時間,調(diào)用b的時候動態(tài)獲取當前時間
    shell腳本里面使用變量的方法:${變量} ,如使用變量a就應該是${a}。
6.  if判斷
    可以判斷:整數(shù)、小數(shù) 、字符串、文件夾是否存在、文件是否存在 等。
    格式: if [空格 xx = yy 空格]   注意:使用單個等號,表達式前后及等號兩邊各有一個空格。
   示例:
          if [ '$a' = 'www.ruozedata.com' ]; then
              echo "D3"
            fi
7.  shell中for循環(huán)的幾個常用寫法
    第一類:數(shù)字性循環(huán)
        例1:
                #!/bin/bash  
                for((i=1;i<=10;i++));  
                do   
                    echo $(expr $i \* 3 + 1);  
                done 
        例2:
                #!/bin/bash  
                for i in $(seq 1 10)  
                do   
                    echo $(expr $i \* 3 + 1);  
                done  

        例3:
                #!/bin/bash  
                for i in {1..10}  
                do  
                    echo $(expr $i \* 3 + 1);  
                done

        例4:
                #!/bin/bash  
                awk 'BEGIN{for(i=1; i<=10; i++) print i}'  


    第二類:字符性循環(huán)
        例1:
                #!/bin/bash  
                for i in `ls`;  
                do   
                    echo $i is file name\! ;  
                done  

        例2:
                #!/bin/bash  
                for i in $* ;  
                do  
                    echo $i is input chart\! ;  
                done
 
        例3:
                #!/bin/bash  
                for i in f1 f2 f3 ;  
                do  
                    echo $i is appoint ;  
                done  

        例4:
                #!/bin/bash    
                list="rootfs usr data data2"  
                for i in $list;  
                do  
                    echo $i is appoint ;  
                done  

    第三類:路徑查找
        例1:
                #!/bin/bash  
                for file in /proc/*;  
                do  
                    echo $file is file path \! ;  
                done
 
        例2:
                #!/bin/bash  
                for file in $(ls *.sh)  
                do  
                    echo $file is file path \! ;  
                done  

8.  分割 
      shell中字符串分割的三種方法:
        例1:分割字符串’1,2,3,4,5’,以“,”分割
            #!/bin/bash  
            var=’1,2,3,4,5’  
            var=${var//,/ }    #這里是將var中的,替換為空格  
            for element in $var   
            do  
                echo $element  
            done 


        例2:分割字符串’mark:x:0:0:this is a test user:/var/mark:nologin’,以“:”分割
            #!/bin/bash  
            user=’mark:x:0:0:this is a test user:/var/mark:nologin’  
            for((i=1;i<=7;i++))  
            do  
                    echo $user|cut -d ":" -f$i  
            done  


        例3:針對例2寫的一種通用的腳本(也使用例1)
            #!/bin/bash  
            user=’mark:x:0:0:this is a test user:/var/mark:nologin’  
            i=1  
            while((1==1))  
            do  
                    split=`echo $user|cut -d ":" -f$i`  
                    if [ "$split" != "" ]  
                    then  
                            ((i++))  
                            echo $split  
                    else  
                            break  
                    fi  
            done  

9.  賦權限和執(zhí)行
    給shell腳本賦可執(zhí)行權限: chmod +x xxx.sh
    執(zhí)行shell腳本的命令:./xxx.sh  
              sh  xxx.sh 
10. debug模式 
    在開發(fā)中,經(jīng)常要是用debug模式來排查問題。
    現(xiàn)在有兩種開啟debug模式的方法:
    1. 在shell腳本的#!/bin/bash  后面加上 -x:   #!/bin/bash -x   
       #編輯 20180525.sh文件  添加 -x參數(shù)后保存退出
        [hadoop@hadoop002 ~]$ vi 20180525.sh 
        #!/bin/bash -x
        a='www.ruozedata.com'
        b=`date`
        echo $a
        echo ${a}$c/d
       #執(zhí)行20180525.sh  腳本
        [hadoop@hadoop002 ~]$ ./20180525.sh 
        + a=www.ruozedata.com
        ++ date
        + b='Fri May 25 14:29:54 CST 2018'
        + echo www.ruozedata.com
        www.ruozedata.com
        + echo www.ruozedata.comFri May 25 14:29:54 CST 2018c/d
        www.ruozedata.comFri May 25 14:29:54 CST 2018c/d
        [hadoop@hadoop002 ~]$ 


    2. 在執(zhí)行腳本的時候 帶上-x參數(shù):  sh -x test.sh
       #刪除20180525.sh腳本里面的 -x參數(shù)后,執(zhí)行執(zhí)行 sh -x 20180525.sh 命令
        [hadoop@hadoop002 ~]$ sh -x 20180525.sh 
        + a=www.ruozedata.com
        ++ date
        + b='Fri May 25 14:30:20 CST 2018'
        + echo www.ruozedata.com
         www.ruozedata.com
         + echo www.ruozedata.comFri May 25 14:30:20 CST 2018c/d
        www.ruozedata.comFri May 25 14:30:20 CST 2018c/d
        [hadoop@hadoop002 ~]$ 



向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI