一、變量的命名
變量名必須以字母或下劃線開頭,由字母、數字、或下劃線組成,變量名的長度不能超過255個字符。
二、變量的分類
1. 用戶自定義變量
2. 環境變量
3. 位置參數變量
4. 預定義變量
三、用戶自定義變量
用戶自定義變量是“局部變量”,只能在當前的Shell中生效
1. 定義變量
變量名=變量值
示例:
注意:等號前後不能有空格,否則會出現以下錯誤提示:
2. 變量調用
$變量名 或 ${變量名}
示例:
3. 變量疊加
示例:
4. 刪除變量
unset 變量名
示例:
5. 查看變量
1) env:查看所有的環境變量
2) set:查看所有的變量(包括用戶自定義變量)
四、環境變量
環境變量是“全局變量”,在當前Shell和這個Shell的所有子Shell中生效
1. 設置環境變量
export 變量名=變量值
或
變量名=變量值
export 變量名
示例:
注意:設置環境變量時,建議使用大寫,避免與用戶自定義變量或系統命令(都是小寫的)沖突。
2. 刪除環境變量,環境變量調用,查看環境變量
用戶自定義變量的使用方式相同
3. 設置PS1環境變量
PS1環境變量會影響用戶提示符信息,示例如下:
五、位置變量
1. $n
n為數字,$0代表命令本身,$1-$9代表第一到第九個參數,十以上的參數需要用大括號包含,如${10}。
示例:
#!/bin/bash
a=$1
b=$2
sum=$(($a +$b))
echo $sum
2. $*
這個變量代表命令行中所有的參數,$*把所有的參數看成一個整體
#!/bin/bash
for i in "$*"
do
echo $i
done
#運行:test.sh 1 2 3
#輸出:1 2 3
#解釋:$*中的所有參數被看成是一個整體,所以這個for循環只會循環一次
3. $@
這個變量也代表命令行中所有的參數,不過$@把每個參數區分對待
#!/bin/bash
for i in "$@"
do
echo $i
done
#運行:test.sh 1 2 3
#輸出:
1
2
3
#解釋:$@中的每個參數被看成獨立的,所以這個for循環會循環多次
4. $#
這個變量代表命令行中的所有參數的個數
#!/bin/bash
echo $#
#運行:test.sh 1 2 3
#輸出:3
六、預定義變量
1. $?
最後一次執行的命令的返回狀態。如果這個值為0,則說明上一個命令執行正確;如果這個值不為0,則代表上一個命令執行的錯誤碼。
示例:
2. $$
當前進程的進程號(PID)
示例:
3. $!
後台運行的最後一個進程的進程號(PID)
#!/bin/bash
find /root -name "test.sh" &
echo $!
七、read命令
接受鍵盤輸入
1. 參數說明
-p "提示信息": 在等待read輸入時,輸出的提示信息
-t 秒數:read命令會一直等待用戶輸入,使用此參數可以指定等待時間
-n 字符數:read命令只接受指定的字符數,就會繼續執行
-s : 隱藏輸入的數據,適用於機密信息的輸入
2. 示例
#!/bin/bash
read -p "please input username:" username
read -p "please input password:" -s password
echo -e "\n"
read -p "please input sex[F/M]:" -n 1 sex
echo -e "\n"
echo "Welcome $username[$sex]"