linux shell記錄

1.if [ $? -ne 0 ]

./why_linuxlinux

if [ "$?" != "0" ]; then 
    echo "Error run Environment"
    exit 1
fi

咱們的系統都有一個shell

Expands to the status of the most recently executed foreground pipeline.ide

擴展到最後執行的前臺狀態管道函數

也說就是ui

我C語言main有一個returncode

shell 也有一個 exit ip

腳本中的 $? 就是上一次腳本調用的return或是exit 的返回值字符串

好比
若是你的程序it

whylinux.cpip

#include <stdio.h>
int main(int argc,char *argv[])
{
    printf("\nDemo\n");
    return 0;
}  

這裏return的是0
那麼
gcc whylinux.c -o whylinux

上面的腳本不會出錯提示了

2.if [ -f "xxx.xx" ]

判斷xxx.xx是否存在 存在則執行下面的指令

if [ -f "$U_Mount_Dir$Update_File"  ]; then
        echo "Exit Update_File $Update_File" >> /mdev.txt
 fi

若是$U_Mount_Dir$Update_File存在,則輸出信息到/mdev.txt文件中

3.Shell腳本函數

  1. 定義函數
    [ function ] funname [()]
    {
    action;
    [return int;]
    }
  2. 說明

    一、能夠帶function fun() 定義,也能夠直接fun() 定義,不帶任何參數。
    二、參數返回,能夠顯示加:return 返回,若是不加,將以最後一條命令運行結果,做爲返回值。 return後跟數值n(0-255

4.Shell獲取ini文件內容

  1. 實例
    __readINI() {
    INIFILE=$1; SECTION=$2; ITEM=$3
    _readIni=awk -F '=' '/\['$SECTION'\]/{a=1}a==1&&$1~/'$ITEM'/{print $2;exit}' $INIFILE
    echo ${_readIni}
    }

    MAC=$(__readINI /mnt/yaffs2/publicgateway/private.ini privateinfo equiment_mac)
  2. 說明

    參數 ini文件名,組名,鍵名
    沒有return,函數返回值是函數最後一行命令的執行結果

5.Shell字符串鏈接

  1. 實例
    ConfigZip=${MAC}".zip"

  2. 說明

    MAC是一個變量值,若是想要在這個變量值後面鏈接其餘字符串,則用{}將該變量值括起來,代表該變量是要進行字符串鏈接的。

6. Shell判斷一個文件中是否有指定的字符串

  1. 實例
    grep -q "ok" /update.txt
    if [ $? -eq 0 ]; then
    sync
    reboot -f
    fi
  2. 說明

    update.txt文件中若是有ok字符串,則$?等於0

7.Shell截取一個字符串的指定位置到指定位置的內容

  1. 實例
    ST1="12345678912345678900000000"
    ConfigZip=${ST1:18:8}".zip"
    echo "$ConfigZip"

  2. 說明

    ${ST1:18:8}意思是截取ST1這個字符串的第18個字符後的8個字符串,截取後echo輸出的字符串爲00000000

8.Shell獲取字符串長度

  1. 實例
    ConfigZip=$(cat /private_config.dat)
    StrLength=${#ConfigZip}

  2. 說明

    第一行獲取private_config.dat文件中的字符串到ConfigZip變量中,第二行獲取ConfigZip字符串的長度

9.Shell變量運算

  1. 實例
    ConfigZip=$(cat /private_config.dat)

    StrLength=${#ConfigZip}
    
    echo $(($StrLength-8)) >> /mdev.txt
    
    echo ${ConfigZip:$(($StrLength-8))} >> /mdev.txt
  2. 說明

    第一行獲取private_config.dat中字符串的內容,第二行獲取其字符串長度,第三行算出StrLength字符串長度-8後 的長度,第四行輸出ConfigZip這個字符串的長度-8後的位置到結束的字符串內容。

10.Linux中的/dev/null 2 > &1

  1. 實例

    if (ls $ConfigZip > /dev/null 2>&1)
  2. 說明

    0:表示鍵盤輸入(stdin)1:表示標準輸出(stdout),系統默認是1 2:表示錯誤輸出(stderr)'>':表示重定向到哪裏 /dev/null:表示Linux的空設備文件 2:表示標準錯誤輸出&1:&表示等同於的意思,2>&1,表示2的輸出重定向等於於11>/dev/null:表示標準輸出重定向到空設備文件,也就是不輸出任何信息到終端,不顯示任何信息。2>&1:表示標準錯誤輸出重定向等同於標準輸出,由於以前標準輸出已經重定向到了空設備文件,因此標準錯誤輸出也重定向到空設備文件。這條命令的意思就是在後臺執行這個程序,並將錯誤輸出2重定向到標準輸出1,而後將標準輸出1所有放到/dev/null文件,也就是清空.因此能夠看出" >/dev/null 2>&1 "經常使用來避免shell命令或者程序等運行中有內容輸出。

相關文章
相關標籤/搜索