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

 

posted @ 2022-04-01 21:23  gg888666  阅读(28)  评论(0编辑  收藏  举报