當您需要執(zhí)行一系列命令或自動化任務(wù)時,Shell 腳本是一種非常有用的工具。Shell 腳本是由一系列 Shell 命令組成的文本文件,可以在命令行或終端中運行。
格式
文件名以 myscript.sh 為后綴,文件中首行聲明了腳本使用的是 Bash。
#!/bin/bash
local_directory="/usr/share/nginx/docusaurus"
cd $local_directory
git pull
if [ $? -eq 0 ]; then
echo "代碼拉取成功!"
else
echo "代碼拉取失敗。"
fi
語法
定義變量
local_directory="/usr/share/nginx/myapp"
目錄切換
cd "/usr/share/nginx/myapp"
// 或者使用變量
cd $local_directory
變量引用前面加 $ 符號
信息輸出
echo "你要輸出的內(nèi)容"
接受輸入
read -s -p "請輸入密碼: " password
-
-s參數(shù)用于隱藏用戶的輸入。用戶輸入的內(nèi)容存儲在password變量中,然后你可以在下面的執(zhí)行腳本中使用它。 -
-p選項用于指定要顯示給用戶的提示消息(prompt)。
條件判斷
判斷上一條命令的執(zhí)行結(jié)果
if [ $? -eq 0 ]; then
echo "代碼拉取成功!"
else
echo "代碼拉取失敗。"
fi
$? 在 shell 腳本中表示上一個命令的退出狀態(tài)碼,當一個命令執(zhí)行成功時,它會返回退出狀態(tài)碼 0,失敗時即為非 0。因此,你可以使用 if [ $? -eq 0 ]; then 來判斷上一條命令
是否執(zhí)行成功。
判斷文件是否存在
file="/usr/local/nginx/tmp.conf"
if [ -e "$file" ]; then
echo "File $file exists."
else
echo "File $file does not exist."
fi
循環(huán)
for i in {1..5}; do
echo "Iteration $i"
done
// 或者使用 while
while [ "$count" -lt 10 ]; do
echo "Count: $count"
((count++))
done
函數(shù)
my_function() {
echo "This is a function"
}
my_function
退出
# 表示成功
exit 0
# 表示發(fā)生了某種錯誤
exit 1
# 使用其他非零狀態(tài)碼表示不同類型的錯誤或情況
exit 2
注釋
# 需要注釋的內(nèi)容
執(zhí)行
需要授予腳本執(zhí)行權(quán)限
chmod +x myscript.sh
運行腳本
./myscript.sh