Shell Script基本結構元素:
1. Shebang行:
#!/bin/bash
位於shell script文件的起始位置,通常以#! 開頭後面接著一個解釋器(interpreter)的路徑,用來告訴系統使用哪種shell來執行script,系統會自動使用指定的解釋器執行script。
#!/bin/bash即是指定使用Bash作為Shell的解釋器在作業系統中執行shell script文件。
2. 註釋:
# 這是一個Shell script 的範例
使用 # 符號來添加註釋以說明代碼的功能、變數、或特定的操作。註釋不會被執行僅供備註閱讀。
3. 變數聲明/使用:
my_variable="Hello World!"
變數名 = 參數,用 = 將參數指定給變數。
echo ${myVariable} 會輸出 “Hello World!”
使用變數時,我們需要在變數名前加上符號 $
4. 命令:
echo "This is a shell script."
Shellscript包含各種命令的區塊。這些命令可以是系統命令、或自定義的函數調用或其他shell指令。
5.流程控制:
可以使用條件語句(如 if、else、case)和迴圈(如 for、while)來執行流程控制,根據指定條件執行不同的代碼區塊。
if [ $age -ge 18 ]; then
echo "You are an adult."
else
echo "You are not yet an adult."
fi
6.函數:
可以定義函數來將程式碼組織成模組區塊可以重複使用。函數能夠接受參數與返回值。
function greet {
echo "Hello, $1!"
}
greet "Alice"
Shell Script 變數詳細介紹:
在Shell script中變數是用來存儲和操作數據的基本單元。可以存儲文本、數字、文件名等各種類型的數據。以下介紹Shell script中的變數結構:
在Shell script 中,你可以使用以下方式定義變數:
variable_name="value"
這裡的 variable_name 是變數的名稱,而 "value" 則是該變數的值。注意,變數名稱不得包含空格,並且通常使用英文字母、數字和下劃線(_)。
my_variable="Hello, World!"
變數賦值:變數賦值通常使用 = 符號。
要讀取變數的值,可以使用 $ 符號加上變數名稱
echo $variable_name
執行echo 命令輸出變數 variable_name 的值。
Shell script中有一些特殊變數,它們提供的資訊包括命令行參數、參數數量和上一個命令的退出狀態。
echo "檔案名稱是:$0"
執行後輸出:
檔案名稱是:./myscript.sh
./myscript.sh arg1 arg2 arg3
那麼在程式中可以使用這些變數來訪問這些參數的值:
echo "第一個參數是:$1"
echo "第二個參數是:$2"
echo "第三個參數是:$3"
執行後輸出:
第一個參數是:arg1
第二個參數是:arg2
第三個參數是:arg3
./myscript.sh arg1 arg2 arg3
那麼在程式中可以使用$#來獲取參數的數量:
echo "傳遞給程式的參數數量是:$#"
執行後輸出:
傳遞給程式的參數數量是:3
if [ $? -eq 0 ]; then
echo "命令成功執行"
else
echo "命令執行失敗"
fi
要修改變數的值,只需重新指定新的值,例如:
variable_name="new_value"
這樣就會將變數 variable_name 的值更改為 "new_value"。
要刪除變數,可以使用 unset 命令,例如:刪除變數 variable_name。
unset variable_name
在Shell script中的變數包括字符串、整數和陣列等。以下是一些常見的Shell script變數類型:
name="John"
message='Hello, World!'
count=10
fruits=("apple" "banana" "orange")
numbers=(1 2 3 4 5)
在Shell script中支援兩種變數類型:區域變數和全域變數。區域變數僅在定義它們的函數或區域中可使用,而全域變數在整個shell script都可使用。默認情況下,變數只在定義它的區域中可使用,稱為區域變數。如果想讓變數在不同區域之間共享,可以使用 export 將變數改為全域變數。
Shellscript 還包含一些特殊的環境變數,用於設置系統的運行環境。一些常見的環境變數包括:
echo "你的家目錄是:$HOME"
echo "你的使用者名是:$USER"
echo "當前工作目錄是:$PWD"
echo "你正在使用的Shell是:$SHELL"
echo "當前的PATH環境變數是:$PATH"