Shell學習筆記 - Shell變量


一、變量的命名

變量名必須以字母或下划線開頭,由字母、數字、或下划線組成,變量名的長度不能超過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]"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM