1. 程式人生 > 其它 >06-shell

06-shell

列印系統資訊

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: line 
5: 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