1. shell 變量
your_name='world'
注意,變量名和等號之間不能有空格。同時,變量名的命名須遵循如下規則:
- 命名只能使用英文字母,數字和下划線,首字符不能是數字。
- 中間不能有空格,可以使用下划線。
- 不能使用標點符號。
- 不能使用 bash 里的關鍵字。
使用一個定義過的變量,只要在變量名前面加$即可:
your_name='world'
echo ${your_name}
變量名外面的花括號是可選的,加花括號是為了幫助解釋器識別變量的邊界。
使用 readonly 命令可以定義只讀變量,只讀變量的值不能被改變。
your_sex='male'
readonly your_sex
使用 unset 命令可以刪除變量。
unset your_name
運行 shell 時,會同時存在三種變量:
- 局部變量 局部變量在腳本或命令中定義,僅在當前 shell 實例中有效,其他shell啟動的程序不能訪問局部變量。
- 環境變量 所有的程序,包括 shell 啟動的程序,都能訪問環境變量,有些程序需要環境變量來保證其正常運行。必要的時候shell腳本也可以定義環境變量。
- shell變量 shell 變量是由 shell 程序設置的特殊變量。shell 變量中有一部分是環境變量,有一部分是局部變量,這些變量保證了 shell 的正常運行。
2. shell 字符串
your_name='world'
echo "${your_name}" # world
echo '${your_name}' # ${your_name},單引號里的任何字符都會原樣輸出
echo "hello,"${your_name}"" # hello,world
echo "hello,'${your_name}'" # hello,world
echo 'hello,'${your_name}'' # hello,world
echo 'hello,"${your_name}"' # hello,"${your_name}"
獲取字符串長度:
your_name='world'
echo ${#your_name} # 5
獲取子字符串:
str="hello world."
echo ${str:0:7} # hello w 從左邊第1個字符開始取7個字符
echo ${str:2} # llo world. 從左邊第個3字符到最后
echo ${str:0-2} # d. 從右邊第2個字符到最后
3. shell 傳遞參數
在執行 Shell 腳本時,向腳本傳遞參數,腳本內獲取參數的格式為:$n。$1 是腳本的第一個參數,以此類推。
其中 $0 是腳本的文件名:
#!/bin/bash
echo "$0"
echo "$1"
echo "$2"
$./test.sh Alice 18
幾個特殊的參數:
$# 傳遞給腳本參數的個數。
$@ 以 "$1" "$2" … "$n" 的形式輸出所有參數。
$* 以 "$1 $2 … $n" 的形式輸出所有參數。
$$ 腳本運行的當前進程的PID。
$? 顯示上一條命令的退出狀態或函數返回值。0表示沒有錯誤,其他任何值表明有錯誤。