1. 程式人生 > 其它 >shell 之醬紫的變數

shell 之醬紫的變數

技術標籤:Linuxlinux伺服器centos運維

文章目錄

變數的型別

分為:預定義變數、環境變數、自定義變數、位置變數

預定義變數:預定義的特殊變數有著特殊的含義,使用者不可以更改,所有的預定義變數都由$符號和另外一個符號組成,常用的預定義特殊變數如下:
    $$ 當前程序PID
    $? 命令執行後的返回狀態.0 為執行正確,非 0 為執行錯誤 
    $# 位置引數的數量
    $* 顯示所有的引數 
    [email protected] 顯示所有的引數
    $! 上一個後臺程序的PID 
    
拓展:$*
[email protected] 有什麼區別 如果不使用雙引號功能一樣 使用雙引號,[email protected] 獲取的就是引數的列表,每個引數都是獨立的字串 sleep 3000 & #符號"&"的意思是把命令放入後臺執行

全域性變數

a.sh 指令碼中執行 b.sh ,在 a.sh 中定義的變數,可以在 b.sh 中使用

可以讓當前shell和子shell都可以使用,成為全域性變數,必須使用 export 匯出

export 變數1 變數2 ...

常量

readonly aa=3
環境變數:shell在開始執行時已經定義好的,就是系統執行環境的一些設定
# env  #env是 environment (環境) 的簡寫,所有的環境變數(包含自定義的環境變數)
# set #列出系統中所有的變數,包括自定義的變數 export 變數名 #使自定義的變數成為環境變數,才使用這個引數。環境變數擁有可繼承性:export之後就擁有繼承性環境變數可以被向下繼承 永久生效 寫到4個登陸指令碼中 ~/.bashrc ~/profile 更好放在/etc/profile.d/目錄下建立獨立的環境變數配置檔案 常用環境變數:USER UID HOME HOSTNAME PWD PS1 PATH PATH:儲存所有命令所在的路徑
#子程序 僅會繼承父 shell 的環境變數, 不會繼承父 shell 的自定義變數
[[email protected] ~]
# bash # 開啟一個子 shell [[email protected] ~]# export a=hello # 在 子 shell 宣告一個環境變數 [[email protected] ~]# bash # 在子 shell 中再開啟一個 子 shell [[email protected] ~]# echo $a # 變數可以生效 hello [[email protected] ~]# exit # 退出 子 shell 的 子 shell exit [[email protected] ~]# exit # 退出 子 shell exit [[email protected] ~]# echo $a # 在 當前 shell 中, 其子 shell 宣告的環境變數是無效的

練習1

#!/usr/bin/bash
# 獲取主機基本資訊
time=`date +%F-%T`
ip=`ip a | grep ens33 | awk 'NR==2 {print $2}'`
echo "現在的時間是:" $time
echo "當前的使用者是:" $USER
echo "當前的使用者標識:" $UID
echo "當前的主機名稱是:" $HOSTNAME
echo "當前可用網絡卡IP是:" $ip


取當前系統分割槽剩餘空間:
df -Th | awk 'NR==6 {print $5}'
489M

取當前系統剩餘記憶體:
echo "現在的剩餘記憶體是:"`free -m |awk 'NR==2{print $4}'`
現在的剩餘記憶體是:16G

取當前cpu平均負載:
echo 現在cpu的`uptime | cut -d, -f4-` #-d指定分隔符,-f指定顯示區域,3-第三列以後(包括第三列)
現在cpu的 load average: 0.00, 0.01, 0.05

方式二:
echo 現在cpu的`uptime | awk -F "," '{print $3,$4,$5}'`
現在cpu的 load average: 0.00 0.01 0.05