標籤:scope cas agent 位置變數 mask 取值 好的 運算 注意
特殊變數
環境變數:
系統本身運行需要由linux系統提前建立好的一類變數
主要用於使用者的工作環境,包括(使用者的宿主目錄,命令的尋找路徑,使用者的目前的目錄,登入的終端等)環境變數的值由作業系統本身維護,隨著使用者的狀態改變而改變
使用env調取當前系統的環境變數
[[email protected] ~]# envXDG_VTNR=1XDG_SESSION_ID=1SSH_AGENT_PID=1925HOSTNAME=zq 主機名稱IMSETTINGS_INTEGRATE_DESKTOP=yesGPG_AGENT_INFO=/run/user/1000/keyring/gpg:0:1VTE_VERSION=3803XDG_MENU_PREFIX=gnome-SHELL=/bin/bashTERM=xterm-256colorHISTSIZE=1000WINDOWID=37748743IMSETTINGS_MODULE=IBusUSER=zq 目前使用者
環境變數的設定檔在/etc/profile(全域)
使用者宿主目錄/home/zq/.bash profile(局部)
$PATH
定義命令預設的搜尋路徑
[[email protected] ~]# echo $PATH/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/zq/.local/bin:/home/zq/bin
注意: 只有自己執行的命令在PATH變數包括的目錄下,才可以直接使用並用tab補齊,如果不在PATH所包括的路徑下, 只能通過絕對路徑或相對路徑使用
[[email protected] ~]# echo $user[[email protected] ~]# echo $USER 查看目前使用者zq[[email protected] ~]# echo $SHELL 當前指令碼/bin/bash[[email protected] ~]# echo $HOME /root
當前語言 $LANG
eg: 將我們所寫的指令碼放到$PATH的預設搜尋路徑中去
[[email protected] ~]# first.sh 不能直接運行這個指令碼bash: first.sh: 未找到命令...[[email protected] ~]# echo $PATH 因為PATH中沒有這個命令/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/zq/.local/bin:/home/zq/bin[[email protected] ~]# PATH="$PATH:/root" 將這個路徑加到PATH中去[[email protected] ~]# echo $PATH PATH中顯示有了這個指令碼的路徑/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/zq/.local/bin:/home/zq/bin:/root[[email protected] ~]# first.sh 可以直接運行這個指令碼了 之前需要通過./執行的 mkdir: 無法建立目錄"/root/shell": 檔案已存在eno16777736: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.1.63 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::20c:29ff:fedf:de30 prefixlen 64 scopeid 0x20<link>
這個只能當前有效,想要永久生效的話必須在/etc/profile最後邊加上剛剛設定的變數,儲存退出,source生效之後,就可以永久直接執行了。
vim /etc/profile 最後追加 所有使用者有效 重啟或 source方可使用
或只是root使用者生效的話 vim /root/.bash_profile 在這個檔案的最後追加
每個使用者還有自己的環境變數都在自己的宿主目錄中
位置變數
為了使用shell指令碼程式:方便通過命令列為程式提供參數Bash引用了位置變數的概念
當執行命令列操作時第一個欄位表示命令字或程式名,其餘的字串參數按照從左至右的順序一次給位置變數賦值
位置變數也叫位置參數,使用$1,$2,$3.....$表示
eg: 編寫一個加法運算的指令碼來說明位置變數
vim zq.sh
#!/bin/bashSUM=$(expr $1 + $2)echo "$1 + $2 = $SUM"
測試結果
[[email protected] ~]# vim zq.sh[[email protected] ~]# ./zq.shbash: ./zq.sh: 許可權不夠[[email protected] ~]# chmod u+x zq.sh[[email protected] ~]# ./zq.shexpr: 語法錯誤 + = [[email protected] ~]# ./zq.sh 1 2 給變數賦值才可以1 + 2 = 3
預定義變數
$#:命令列中位置變數的個數(程式執行了幾個位置參數)
$*:所有位置變數的內容(具體的內容 比如/boot就是個具體內容)
$?:上一條命令執行後返回的狀態,當返回狀態值為0時表示執行正常,非0值表示執行異常或出錯取值在1-127之間
$0:當前執行的進程/程式名(就是當前執行的命令或程式的名字)
!$:表示上一個命令的最後一個參數
linux 特殊shell變數