06-shell
阿新 • • 發佈:2022-04-01
列印系統資訊
root@ubuntu2004:~# bash system_info.sh #用 . bash不規範當前環境中執行,COLOR會變,其他引用者呼叫錯誤值 #!/bin/bash RED="\E[1;31m" GREEN="echo -e \E[1;32m" END="\E[0m" . /etc/os-release #當前環境中執行 $GREEN----------------------Host systeminfo--------------------$END echo -e "HOSTNAME: $RED`hostname`$END" #echo -e "IPADDR: $RED` ifconfig eth0|grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' |head -n1`$END" echo -e "IPADDR: $RED` hostname -I`$END" echo -e "OSVERSION: $RED$PRETTY_NAME$END" echo -e "KERNEL: $RED`uname -r`$END" echo -e "CPU: $RED`lscpu|grep '^Model name'|tr -s ' '|cut -d : -f2`$END" echo -e "MEMORY: $RED`free -h|grep Mem|tr -s ' ' : |cut -d : -f2`$END" echo-e "DISK: $RED`lsblk |grep '^sd' |tr -s ' ' |cut -d " " -f4`$END" $GREEN---------------------------------------------------------$END
set -e 設定該選項後,當指令碼中任何以一個命令執行返回的狀態碼不為0時就退出整個指令碼
root@ubuntu2004:~# cat aaaa.sh #!/bin/bash set -e echo "start ..." chuan echo 'end ...' root@ubuntu2004:~# bash aaaa.sh start ... aaaa.sh: line5: chuan: command not found
set -u 設定該選項後,當指令碼在執行過程中嘗試使用未定義過的變數時,報錯並退出執行整個指令碼
root@ubuntu2004:~# cat aaaa.sh #!/bin/bash set -u echo "start ..." echo $GOOD echo 'end ...' root@ubuntu2004:~# bash aaaa.sh start ... aaaa.sh: line 5: GOOD: unbound variable
1,變數
變量表示命名的記憶體空間,將資料放在記憶體空間中,通過變數名引用,獲取資料 2,命名要求 區分大小寫 不能使程式中的保留字和內建變數:如:if, for 只能使用數字、字母及下劃線,且不能以數字開頭,注意:不支援短橫線 “ - ”,和主機名相反 3,變數的生效範圍等標準劃分變數型別 普通變數:生效範圍為當前shell程序;對當前shell之外的其它shell程序,包括當前shell的子shell 程序均無效 環境變數:生效範圍為當前shell程序及其子程序 本地變數:生效範圍為當前shell程序中某程式碼片斷,通常指函式root@ubuntu2004:~# Gexu_chuan=1234 #變數賦值 root@ubuntu2004:~# echo $Gexu_chuan 1234 root@ubuntu2004:~# unset Gexu_chuan root@ubuntu2004:~# echo $Gexu_chuan
root@ubuntu2004:~# name123=xuchuan #變數可更改 root@ubuntu2004:~# echo $name123 xuchuan root@ubuntu2004:~# name123=xuchuan123 root@ubuntu2004:~# echo $name123 xuchuan123
解壓縮
tar czf script2.tar.gz . #壓縮
tar xf scripts.tar.gz -C /data2/ #解壓縮
列印系統資訊
root@ubuntu2004:/data# cat system_info.sh #!/bin/bash COLOR=$[RANDOM%7+31] . /etc/os-release #當前環境中執行,就是呼叫 echo -e "CPU: \c" echo -e "\E[1;${COLOR}m`lscpu |sed -nr 's#^Model name: +(.*)#\1#p'`\E[0m" echo -e "Mem: \c" echo -e "\E[1;${COLOR}m`sed -nr '1s/^.* ([0-9]+.*)/\1/p' /proc/meminfo`\E[0m" echo -e "sda: \c" echo -e "\E[1;${COLOR}m`lsblk /dev/sda | grep "^sda" |tr -s " " |cut -d" " -f4`\E[0m" echo -n "OS: " echo -e "\E[1;${COLOR}m'${VERSION}'\E[0m"
root@ubuntu2004:/data# bash system_info.sh CPU: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz Mem: 3994668 kB sda: 120G OS: '20.04.3 LTS (Focal Fossa)' 11382 #子程序中有效
sleep 後檢視
pstree -p
├─sshd(912)───sshd(1267)─┬─bash(1412)───bash(11382)───sleep(11392)
│ ├─bash(2336)───pstree(11397)
root@ubuntu2004:~# echo $BASHPID 2336
用bash 不用 . 的原因
root@ubuntu2004:/data# bash system_info.sh #COLOR 子程序中的變數 CPU: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz Mem: 3994668 kB sda: 120G OS: '20.04.3 LTS (Focal Fossa)' root@ubuntu2004:/data# echo $COLOR 100 root@ubuntu2004:/data# . system_info.sh #影響當前環境COLOR變數 CPU: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz Mem: 3994668 kB sda: 120G OS: '20.04.3 LTS (Focal Fossa)' root@ubuntu2004:/data# echo $COLOR 37