Shell腳步編寫

來源:互聯網
上載者:User

標籤:139郵箱   local   world   簡訊   記錄   

1.shell指令碼就是一些命令的集合。把需要執行的一組命令記錄到文檔中,再去調用這個文檔。

    139郵箱,收到郵件同時受到簡訊通知。

    shell腳步編寫建議:自訂指令碼放到/usr/local/sbin目錄下

2.第一個shell指令碼

    vim firstshell.sh

        #! /bin/bash

        ##this is my first shell script

        ##writen by jason 2015-07-02

        

        date

        echo "Hello world !"

    #! /bin/bash,開頭第一行,表示該檔案使用bash文法

    .sh尾碼,習慣

    #後面跟的注釋,良好習慣,便於以後查看腳步

    執行指令碼:sh firstshell.sh 或者 ./firstshell.sh(有時缺少許可權時,chmod修改)

3.指令碼中變數的使用

    vi variable.sh

        #! /bin/bash

        ## In thie shell script we will use variables

        ## writen by jason 2015-07-02

        

        d=`date +%H:%M:%S`

        echo "This script begin at $d"

        echo "Now we will sleep 2 seconds."

        sleep 2

        d1=`date +%H:%M:%S`

        echo "This script end at $d1"

    變數d和d1的定義時,使用反引號` `,變數內容使用到其他命令的結果(shell腳步基礎知識部落格中)。

    指令碼總引用變數,需加上$

  3.1 數值運算,兩個數的和 sum

    vi sum.sh

        #! /bin/bash

        ## Sum of tow numbers

        ## By jason 20150702

        a=1

        b=2

        sum=$[$a+$b]

        echo $sum

    數學計算,要用[ ]括起來,並且最外面要加一個 $

  3.2使用者互動,使用者輸入

    vi read.sh

        #! /bin/bash

        ## Use "read" in shell script

        ## By jason 20150702

        read -p "Please input a number:" x

        read -p "Please input anoter number" y

        sum=$[$x+$y]

        echo "The sum of two number is : $sum"

    read就是用在和和使用者互動,把使用者輸入的字串作為變數值

    -x 查看shell執行的過程,sh -x read.sh

   3.3 shell預設變數 $1,$2,$0(列印指令碼本身的名字)

        vi option.sh

            #! /bin/bash

            ##

            ##

            sum=$[$1+$2]

            exho "sum=$sum"

        sh option.sh 3 7

            sum=10

    $1,$2就是shell腳步預設的變數,預設設定好的,按順序輸入兩個數字,預設賦值變數$1=3,$2=7.

同樣$3,$4,$5依次後推也是預設變數。

4.指令碼中邏輯判斷if,if...else,if..elif..else

   4.1 vi iftest1.sh    

        #! /bin/bash

        ##

        ##

        read -p "Input your score: " a

        if (($a<60)); then                                  if 判斷語句 ; then

           echo "Didn‘t pass the exam."                        commond

        fi                                                  fi

     (($a<60)),shell腳步中專屬的格式,必須使用兩個()

    文法格式:if 判斷語句;then

                匹配結果執行相應的命令

    4.2 if ..else

        vi iftest2.sh

        #! /bin/bash

        ##

        ##

        read -p "Iput your score: " a                 

        if (($a<60));then                              if 判斷語句 ;then 

            echo "Do not pass."                          commond

        else                                           else

            echo "Good ! pass the exam."                  commond

        fi                                             fi

    4.3 if..esif..else

        vi iftest3.sh

            #! /bin/bash

            ##

            ##

            read -p "Input your score: " a

            if (($a<60)); then

                echo "do not pass."

            elif(($a>=60))&&(($a<80)); then

                echo "good,pass."

            else    echo "Very good,high."

        兩個判斷語句通過&&或者||一起時,需要用兩個(( ))隔開,單獨判斷

        判斷數值大小除(( ))形式外,還有[ ],但需用-lt(小於),-gt(大於),-le(小於等於),-ge(大於等於),-eq(等於),-ne(不等於)

        if [$a -lt 60]; then

        if [$a -gt 60] || [$a -lt 80]; then ....

    4.4 判斷文件屬性

        -e 判斷檔案或目錄是否存在;-d 判斷是否為目錄,並存在;-f 判斷是否為普通檔案,並存在

;-r 判斷文檔是否可讀;-w 是否可行;-x 是否可執行。

        if [ -f /root/test.txt ]; then echo "It is file."; fi  

        [  ]前後一定要加空格,不然報錯。

5.指令碼邏輯判斷 case

    vi case.sh

    #! /bin/bash

    ##

    ##

    read -p "Input a number: " n

    a=$[$n%2]

    case $a in                                    case 變數 in

        1)                                            value1)

            echo "the number is odd."                    commond

            ;;                                            ;;

        0)                                            value2)

            echo "the number is even."                    commond

            ;;                                            ;;

        *)

            echo "this is not a number"

            ;;

    esac

    不限判斷value值的個數。

6.指令碼中的迴圈  for

    vi fortest.sh

    #! /bin/bash

    for i in `seq 1 5`; do            for 變數名 in 迴圈條件 ;do   

        echo $i                            command

    done                              done

 迴圈條件seq 1 5表示從1-5的序列

 6.1 迴圈條件寫成一組字串或者數字,也可以是一條命令執行的結果

    for i in 1 2 3 4 a b; do echo $i; done

    for file in `ls`; do echo $file; done  

7.指令碼中的迴圈 while 

    vi whiletest.sh

    #! /bin/bash

    a=5 

    while [$a -ge 1]; do        while  迴圈條件;do

        echo $a                    command

        a=$[$a-1]        

    done                        done

8.shell指令碼中函數

    函數:就是把一段代碼整理到一個小單元中,起個名字,調用這個單元的名字即可。

    vi func.sh

    #! /bin/bash

    function sum()                function 函數名()

    {                             {  

        sum=$1+$2                    command

        echo $sum

    }                            }

    sum $1 $2                    調用函數

    在shell指令碼中,函數一定要寫在最前面,不能出現在後面或中間,必須在最前面申明,才能為後面調用。

Shell腳步編寫

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.