1. 程式人生 > >CentOS 7 Shell指令碼程式設計第三講 Shell 變數

CentOS 7 Shell指令碼程式設計第三講 Shell 變數

開發十年,就只剩下這套架構體系了! >>>   

上文思考問題中講到其他方法檢視系統變數。本文不完全列舉以下幾種。

#列印系統環境變數PATH
[root@promote ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@promote ~]# export
#其他方法還有set 、declare等
[root@promote ~]# set

變數字面意思可以理解為變和量,分別代表變化和值(量)。使用賦值符號=。量推薦使用""。本文推薦=讀作賦值,不要讀作等於。其他程式語言有==類似於等於。

變數可以分為全域性變數和區域性變數,顧名思義,可以理解為變數所在區域作用範圍不同,界限不是很明顯。

變數還可以分為系統環境變數和使用者自定義變數。系統環境變數對所有使用者生效,使用者環境變數對當前使用者生效。

系統變數用於定義Shell環境,保證SHell指令碼正常輸出,確定使用者名稱稱、命令所在目錄、終端型別、版本、主機名等眾多資訊。檢視系統變數方法已經介紹過(env等命令)。

#演示常見幾個變數,更多資訊使用env命令
[root@promote bin]# echo $HOME
/root
[root@promote bin]# echo $USER
root
[root@promote bin]# echo $UID
0
[root@promote bin]# 

export 命令建立環境變數,一般臨時使用或者每次使用均需要建立。關閉終端後變數消失。舉例如下

[root@promote ~]# export name="tom"
[root@promote ~]# echo $name
tom
#退出使用者終端,XShell退出使用者終端需要重新連線伺服器
[root@promote ~]# exit
登出
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(CentOS7 演示環境) at 15:49:05.

Type `help' to learn how to use Xshell prompt.
[C:\~]$ 

Connecting to 192.168.216.140:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Sun Mar 31 14:33:59 2019 from 192.168.216.1
[root@promote ~]# 
#name變數為空,實際無輸出,顯示為空行
[root@promote ~]# echo $name

[root@promote ~]#

#方法2 
[root@promote ~]# export name
[root@promote ~]# name="tom"
[root@promote ~]# echo $name
tom

#方法3
[root@promote ~]# name="tom";export name

#方法4
[root@promote ~]# declare -x name="bill"
[root@promote ~]# echo $name
bill
[root@promote ~]# 

注意對比以上各種方法不同點。

變數名稱以字母和下劃線開頭,可以接數字或字母,不要有含特殊符號。變數內容可以以單引號或雙引號包圍,也可以不使用,三者具有不同意義。

Java 在Linux 系統中應用廣泛,分為Oracle JDK和OpenJDK等,本文以yum 安裝 OpenJDK 為例演示使用者自定義變數建立過程。

#檢視檔名包含java軟體列表
[root@promote ~]# yum -y list java*
#安裝OpenJDK 1.8.0
[root@promote ~]# yum -y install java-1.8.0-openjdk*
#解除安裝OpenJDK 1.8.0,不執行該命令
[root@promote ~]# yum -y remove java-1.8.0-openjdk*
#檢視Java版本
[root@promote ~]# java -version
openjdk version "1.8.0_201"
OpenJDK Runtime Environment (build 1.8.0_201-b09)
OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)
[root@promote ~]# 
[root@promote bin]# which java
/usr/bin/java
[root@promote bin]# ls -l /usr/bin/java | grep "java"
lrwxrwxrwx 1 root root 22 3月  31 15:33 /usr/bin/java -> /etc/alternatives/java
[root@promote]# ls -l /etc/alternatives/ | grep -F "java"
[root@promote]# export JAVA_HOME=/etc/alternatives/

如果希望環境變數永久生效,需要將環境變數寫入使用者或系統配置檔案。不同系統和使用者配置檔案分別位於

#使用者變數,以root為例,表示root使用者當前資料夾隱藏檔案.bashrc
[root@promote ~]# ls -l .bashrc 
-rw-r--r--. 1 root root 176 12月 29 2013 .bashrc
#系統變數
[root@promote bin]# ls /etc/bashrc
/etc/bashrc
[root@promote bin]# ls /etc/profile
/etc/profile
[root@promote bin]# 

Shell 直譯器調取配置檔案具有優先順序,優先調取/etc/bashrc檔案,然後根據需求分別讀取其他配置檔案。

使配置檔案生效使用 source 配置檔案 命令。

取消變數使用unset命令。可以取消使用者和系統環境變數。

[root@promote ~]# unset JAVA_HOME
[root@promote ~]# echo $USER
root
[root@promote ~]# unset $USER
[root@promote ~]# echo $USER
#name變數為空,實際無輸出,顯示為空行

下一講繼續介紹變數使用