打印系统信息
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