- 保證shell腳本的安全性。
在#!/bin/bash
後面加上-e
。-e
的作用是噹噹前腳本出現問題時就退出。 腳本出現錯誤時,如果不加-e
會繼續執行下去,這種忽略錯誤的行爲不是好行爲。-v
的作用是打印當前腳本。可以在腳本出錯退出時很方便的定位到出錯的語句。
所以在腳本頭該寫的是:#!/bin/bash -ev
。 - 確保創建目錄一定成功。
在mkdir
的時候,加上-p
的時候能夠確保該文件夾創建成功,加上-m arg
配置權限。
所以下面語句mkdir -m 777 -p /path/to/dir
。這個語句,在目錄/path/to/
下面創建dir
文件夾,並賦予777
即所有用戶都可讀寫執行的權限。同時,該語句保證mkdir
一定成功,即如果dir
的任意上級目錄不存在,系統都會創建該上級目錄,直至dir
;如果dir
目錄存在,則不做任意改動並返回成功,如果不加-p
,上面兩種情況都會返回失敗。 獲取當前腳本所在目錄。
在運行腳本的時候,確保腳本運行時所在的目錄是非常重要的,腳本運行時目錄會在調用這個腳本的目錄。而很多時候我們希望腳本運行時的目錄是在腳本所在的目錄。以腳本/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
。這個就是腳本所在的目錄。在腳本中安裝一些依賴。
在腳本中,如果直接使用apt-get install
語句,經常要你確認安裝,由於是在腳本中執行,顯然是沒有機會按y鍵的。
在安裝語句中加上-y
選項,比如apt-get install -y libssl-dev
。這個就能默認確認安裝了。- 確認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
會打印當前用戶的名字。
Shell雜記
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.