Shell雜記

  1. 保證shell腳本的安全性。
    #!/bin/bash 後面加上-e-e 的作用是噹噹前腳本出現問題時就退出。 腳本出現錯誤時,如果不加-e會繼續執行下去,這種忽略錯誤的行爲不是好行爲。-v的作用是打印當前腳本。可以在腳本出錯退出時很方便的定位到出錯的語句。
    所以在腳本頭該寫的是:#!/bin/bash -ev
  2. 確保創建目錄一定成功。
    mkdir的時候,加上-p的時候能夠確保該文件夾創建成功,加上 -m arg配置權限。
    所以下面語句mkdir -m 777 -p /path/to/dir。這個語句,在目錄/path/to/下面創建dir文件夾,並賦予777即所有用戶都可讀寫執行的權限。同時,該語句保證mkdir一定成功,即如果dir的任意上級目錄不存在,系統都會創建該上級目錄,直至dir;如果dir目錄存在,則不做任意改動並返回成功,如果不加-p,上面兩種情況都會返回失敗。
  3. 獲取當前腳本所在目錄。
    在運行腳本的時候,確保腳本運行時所在的目錄是非常重要的,腳本運行時目錄會在調用這個腳本的目錄。而很多時候我們希望腳本運行時的目錄是在腳本所在的目錄。以腳本/path/to/test.sh爲例。假設在path目錄下用語句./to/test.sh調用。這個時候腳本運行環境的目錄是在/path下,而不是腳本所在目錄/path/to下。所以經常需要將腳本重新定位要它本身所在目錄。

    DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

    以腳本/path/to/test.sh爲例,假設該文件中存在以上語句。在path目錄下用語句./to/test.sh調用。
    那麼,語句${BASH_SOURCE[0]}顯示的是運行該語句時候的調用命令,即./to/test.sh。然後dirname就是./to。之後,進入該目錄並打印pwd,就會得到路徑/path/to。這個就是腳本所在的目錄。

  4. 在腳本中安裝一些依賴。
    在腳本中,如果直接使用apt-get install語句,經常要你確認安裝,由於是在腳本中執行,顯然是沒有機會按y鍵的。
    在安裝語句中加上-y選項,比如apt-get install -y libssl-dev。這個就能默認確認安裝了。

  5. 確認root權限。

    echo "Check use is root or not now."
    ROOT_UID=0
    if [ "$UID" -eq "$ROOT_UID" ]
    then
    echo "You are root."
    else
    echo "You are not root, please run as root"
    exit 1
    fi

    $UID打印當前用戶UID,root用戶的UID是0.二者相等,那麼自然當前用戶是root。
    此外,把if語句換成if [ "$whoami" -eq "root" ]也行。$whoami會打印當前用戶的名字。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章