• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • shell基礎

    發表于:2007-05-26來源:作者:點擊數: 標簽:
    }} Shell變量名使用的特殊字符 $# 傳送給命令Shell的參數序號 $- 在Shell啟動或使用set命令時提供選項 $? 上一條命令執行后返回的值 $$ 當前shell的進程號 $! 上一個子進程的進程號 $@ 所有的參數,每個都用雙括號括起 $* 所有參數,用雙括號括起 $n 位置參

    }}

    Shell變量名使用的特殊字符
            $# 傳送給命令Shell的參數序號
            $- 在Shell啟動或使用set命令時提供選項
            $? 上一條命令執行后返回的值
            $$ 當前shell的進程號
            $! 上一個子進程的進程號
            $@ 所有的參數,每個都用雙括號括起
            $* 所有參數,用雙括號括起
            $n 位置參數值,n表示位置
             當前shell名


    echo "$HOME $PATH"
     結果顯示$/u/ice_walk/bin:/etc:/usr/bin
     而
    echo '$HOME $PATH' 結果顯示$HOME $PATH
    shell的逃逸符是一個"\",表示其后的字符不具有特殊的含義或不是shell的函數
     echo $HOME $PATH
     結果顯$$HOME /bin:/etc:/usr/bin:

    可以用變量和其他字符組成新的字,例如:
        SUN=sun
        echo $day
     sunday


    用戶也可以在命令行上同時對多個變量賦值,賦值語句之間用空格分開:
        X=x Y=y
        注意變量賦值是從右到左進行的

    }}}

    expr命令將把一個算術表達式作為參數,通常形式如下:
        expr [數字] [操作符] [數字]
      由于Shell是按字符形式存儲變量的,所以用戶必須保證參加算術運算的操作數必須為數值。下面是有效的算術操作符:
        +   兩個整數相加
        -   第一個數減去第二個數
        *   兩整數相乘
        /   第一個整數除以第二個整數
        %   兩整數相除,取余數

    用戶不能單純使用"*"做乘法,若輸入:
        $expr 4*5
      系統將會報錯,因為Shell看到"*"將會首先進行文件名替換。正確形式為:
        $expr 4 \* 5
         結果顯示:20

    {{{{shell樣例 注意:}}}}


    #!/bin/bash
    flag=1
    top=10000
    date >>/backup1/time.txt
    while [ $flag -lt $top ]  -lt是小于  注意 需要用[ ],且注意 [后 和]后,都有空格
            do
             cd /backup1/check
            dd if=/dev/zero of=test_$flag.txt bs=1024 count=2000000
            rm -f test_$flag.txt
            flag=`expr $flag + 1`  注意 左邊 需要用flag而不是$flag表示 給變量值,特別注意是=號,前后 不能有空格,而且 expr $flag + 1 需要用執行符``包括
            done


    }}}}}

    echo命令可以使用一些特殊的逃逸字符進行格式化輸出,下面是這些字符及其含義:
        \b  Backspace
        \c  顯示后不換行
        \f  在終端上屏幕的開始處顯示
        \n  換行
        \r  回車
        \t  制表符
        \v  垂直制表符
        \   反斜框
        nnn 用1,2或3位8進制整數表示一個ASCII碼字符

    echo -en $"\t\tPress 'I' to enter interactive startup."
    -e表示 允許\有新的意義
    -n表示 不換行  如果 和 “”內的參數 有沖突,以“”內為準


    }}
    測試字符串間的關系


    有關串的操作符如下:
        str1 = str2      當兩個串有相同內容、長度時為真
        str1 != str2      當串str1和str2不等時為真
        -n str1         當串的長度大于0時為真(串非空)
        -z str1         當串的長度為0時為真(空串)
        str1           當串str1為非空時為真


    if [ -z "$IN_INITLOG" ]; 字符使用時 用""


    有關文件的測試
      使用test進行的第三類測試是測試文件的狀態,用戶可以測試文件是否存在,是否可寫以及其他文件屬性。下面是文件測試時使用的選項。注意只有文件存在時,才有可能為真。
      -r file     用戶可讀為真
      -w file     用戶可寫為真
      -x file     用戶可執行為真
      -f file     文件為正規文件為真
      -d file     文件為目錄為真
      -c file     文件為字符特殊文件為真
      -b file     文件為塊特殊文件為真
      -s file     文件大小非0時為真
      -t file     當文件描述符(默認為1)指定的設備為終端時為真
    復雜的條件測試(and 、or 、not)
      -a         與
      -o        或
      !        非
      就是組合條件了,任何高級語言中都有的(NOT 、AND 、OR),例如:
        $test -r em.null -a -s em.null
        $echo $?
        結果顯示:1
        說明了em.null并不是可讀并且非空的文件
    測試兩個整數之間關系
      test命令與expr命令一樣,也可以把字符轉變成整數,然后對其操作。test命令對兩個數進行比較,使用的操作符如下:
        int1 -eq int2    兩數相等為真 equal   (eq)
        int1 -ne int2    兩數不等為真 not equal  (ne)
        int1 -gt int2    int1大于int2為真  great  (gt)
        int1 -ge int2    int1大于等于int2為真 great equal (ge)
        int1 -lt int2    int1小于int2為真  less than (lt)
        int1 -le int2    int1小于等于int2為真  less than equal (le)

    本階段 小程序:


    使用while循環使程序執行一次可以備份多個用戶指定的目錄。代碼如下:
    echo "歡迎使用備份小程序"
      ANS=Y
      while [ $ANS = Y -o $ANS = y ]
      do
        echo _
        #讀目錄名
        echo "輸入要備份的目錄名:\c"
        read DIR
        if [ ! -d $DIR ]
        then
            echo "$DIR不是一個目錄!"
            exit 1
        fi
        cd $DIR
        echo "請選擇:"
        echo _
        echo "1 恢復數據到 $DIR"
        echo "2 備份$DIR的數據"
        echo
        echo "請選擇:\c"
        read CHOICE
        case "$CHOICE" in
           1) echo "恢復中… …"
            cpio -i        2) echo "備份中… …"
            cpio -o >/dev/rmt0;;
           *) echo "選擇無效"
        esac
        if [ $? -ne 0 ]
        then
           echo "cpio執行過程中出現問題"
           exit 2
        fi
        echo "繼續別的目錄嗎?(Y/y)\c"
        read ANS
      done


    2。
    if [ $# -eq 0 ]
      then
          echo "Usage:x_shift2.sh 參數"
          exit 1
      fi


    3。
    I=1
    while [ $I -lt 10 ]
            do
            {
            echo "$I\c"
            I=`expr $I + 1`
     if [ $I -eq 3 ]
            then
            continue
            fi
            if [ $I -eq 7 ]
            then
            break
            fi
            }
            done

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>