天天看點

bash腳本程式設計之四,整數測試以及特殊變量

exit:退出腳本

exit:#    #為退出碼,取值範圍:0-255 一般0為正常退出,1,127預留給系統,剩下的自定義

bash中常用的條件測試有三種:

整數測試:

    -gt

    -le

    -ne

    -eq

    -ge

    -lt

    格式:

        A=1

        B=2

        [ $A -eq $B ]

        [[ $A -eq $B ]

        test  $A -eq $B 

檔案測試:

    -e FILE:測試檔案是否存在 exists

    -f FILE:測試檔案是否為普通檔案

    -d FILE:測試指定檔案是否為目錄

    -r FILE:測試目前使用者是否對檔案具有讀權限

    -w FILE:測試目前使用者是否對檔案具有寫權限

    -x FILE:測試目前使用者是否對檔案具有執行權限

字元測試:

    ==:測試兩個字元串是否相等

    !=:測試兩個字元串是否不等

    >或<:對比兩個字元串的大小(先轉換為ASCII的值,然後對比)

    -n:測試字元串是否為空,空為真,不空為假

    -z:測試字元串是否為不空,不空為真,空則為假

測試腳本是否文法錯誤:

bash -n 腳本

bash -x 腳本:單步執行腳本(可以看到腳本的執行過程)

練習:寫一個腳本

給定一個檔案:

    如果是一個普通檔案,就顯示之

    如果是一個目錄,亦顯示之

    否則,顯示無法識别

#!/bin/bash

if [ $# -lt 1 ];then

        echo  "Usage: ./checkfile.sh  ARG .."

        exit 2

fi

if  [ ! -e $1 ];then

        echo $1 not exists!

        exit 7

        elif [ -f  $1 ];then

                echo  "comman files!"

        elif [ -d $1 ];then

                echo "directory  files!"

        else

                echo "unknow files!"

定義腳本退出狀态碼:

    exit:退出腳本

    exit #:設定腳本退出碼為#(0-255,0、1、127一般留作系統備用),如果腳本沒有明确定義退出狀态碼,那麼,最後一條執行的指令的退出碼即為腳本的退出碼。

bash的變量的類型:

    本地變量:作用域為目前shell程序

    環境變量:作用域為目前shell及其子shell程序

    位置變量:

        $1、$2、...

        shift:把位置變量進行傳遞

    特殊變量:

        $#:參數的個數

        $*:參數清單

        $@:參數清單

        $?:指令的執行狀态結果

shift示例:

[root@logstach ~]# cat 1.sh 

echo  "before shift : \$1: $1 \$2: $2 \$3: $3 \$4: $4 \$5: $5"

shift 1

echo  "now shift 1  : \$1: $1 \$2: $2 \$3: $3 \$4: $4 \$5: $5"

shift 2

echo  "now shift 2  : \$1: $1 \$2: $2 \$3: $3 \$4: $4 \$5: $5"  

[root@logstach ~]# ./1.sh 1 2 3 4 5 6 7 8 9 10

before shift : $1: 1 $2: 2 $3: 3 $4: 4 $5: 5

now shift 1  : $1: 2 $2: 3 $3: 4 $4: 5 $5: 6

now shift 2  : $1: 4 $2: 5 $3: 6 $4: 7 $5: 8

本文轉自biao007h51CTO部落格,原文連結: http://blog.51cto.com/linzb/1732868,如需轉載請自行聯系原作者