Shell腳本

查看使用shell


臨時環境變量


永久環境變量

/etc/profile中定義 ,所有用戶可用

$HOME/.bash_profile  針對特定用戶有效

預定義環境變量

如$PATH、$HOME、$SHELL、$PWD

創建SHELL


執行shell腳本

sh file.sh   或者讓腳本有執行權限(絕對路徑或者相對路徑)

變量規則

    1.變量名稱可以是字母、數字、下劃線組成,但是不能以數字開頭,環境變量建議大寫

    2.變量的類型默認都是字符串類型

    3.變量用=連接值,等號兩邊不能有空格

    4.變量的值如果有空格,需要使用單引號或者雙引號

變量分類

    自定義變量,環境變量,位置參數變量,預定義變量(可以用set查看系統存在的所有變量,釋放變量unset,用readonly修飾的變量不能刪除)

變量調用

    在變量名前面加上:$

變量賦值

    1.STR="hello"

    2.A=`ls -la` 或者 $(ls -la)  將執行結果賦給變量      數字:a=$((4+5))

    3.A=$STR

    4.a="$aa"456   a=${aa}789


環境變量(在當前shell和子shell都有效)

    export 變量名=變量值

位置參數變量

    $0 命令本身  $1-9代表第1個到第9個參數

    $* 代表命令行中所有的參數,以"$1  $2  $3 $4"的形式輸出

    $@  代表命令行的所有參數,以“$1”“$2”"$3"的形式輸出

    $# 代表命令行參數的個數

    $*和$@相同與 不同點:

        都表示傳遞給函數或者腳本的參數,不被雙引號包含時,都以"$1" "$2" ..."$n"的形式輸出

        當被雙引號包含時,“$*”會將參數作爲一個整體,而"$@"會將各個參數分開

        eg:

        

        結果:

        

預定義變量

    $?  執行上一個命令的返回值,返回0代表成功,非0表示失敗

    $$ 當前進程的PID,即當前執行腳本生成的進程號

    $! 後臺運行的最後一個進程的進程號PID,&

read

    read 【-p提示語句】【-n字符個數】【-t等待時間】【-s隱藏輸入】

$()和${}的區別

    $()和``的作用一樣,都表示優先執行的命令  eg:echo $(ls a)

    ${}是取變量

    $(( )) 是適用於數值運算    eg:$((1+2))

內置test命令

    1.[ expression ]  注意:首尾都有一個空格     2.test  expression

    測試範圍:整數,字符串,文件

        當表達式結果爲真時,test返回值是0,否則爲非0,$?的結果爲0,否則爲非0

    字符串測試

            [ str1 == str2 ]  測試是否相等

            [ str1 != str2 ]  測試是否不相等

            [ str1 ]  測試是否不爲空

            [ -n str1 ]  測試是否不爲空

            [ -z str1 ]  測試是否爲空

    整數測試

            [ int1 -eq int2 ]  測試是否相等

            [ int1 -ge int2 ]  測試是否>=

            [ int1 -gt int2 ]  測試是否大於>

            [ int1 -le int2 ]  測試是否<=

            [ int1 -lt int2 ]  測試是否小於<

            [ int1 -ne int2 ]  測試是否不相等

    文件測試

            [ -d file ]    是否爲目錄

            [ -e file ]    文件是否存在

            [ -f file ]    文件是否常規文件

            [ -L file ]    文件存在並且是一個符號鏈接

            [ -r file ]    是否可讀

            [ -w file ]    是否可寫

            [ -x file ]    是否可執行

    多重條件測試

            條件1 -a 條件2  並且的關係              條件1 -o 條件2  或的關係           ! 取反

流程if控制語句

    if [ ]

        then

            //TODO

    elif [ ]

        then

            //TODO

    else

            //TODO

    fi

流程case控制語句

    case $變量 in

        1)

            echo ""

        ;;

        2)

            echo ""

        ;;

        *)

            echo ""

    esac

流程for控制語句

    第一種:

    for N in 1 2 3

        do

            //TODO

        done

    第二種

    for((i=0;i<=5;i++))

        do

            //TODO

        done

    

流程while控制

    第一種

    while [ ]

        do

            //TODO

        done

    

    第二種

    

自定義函數

    說明:1.函數需要先定義,在調用 

        2.ruturn value 來獲取函數的返回值

        3.函數在當前shell中執行,可以使用腳本中的變量

    

腳本測試

    sh -x script  執行該腳本並顯示所有變量的值

    sh set -x script 對部分腳本測試

    sh -n script 不執行腳本,只是檢查語法,返回語法錯誤

    sh -v script 執行並顯示腳本

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章