实验环境
centos8.2 pstree
yum install -y psmisc
shell脚本属于动态弱类型语言
变量定义和引用
类型 | 举例 |
---|---|
普通变量 | 仅当前shell生效,其shell子进程和其他shell都不生效 |
环境变量 | 当前shell及其shell子进程生效 |
本地变量 | 当前shell进程中某代码片段,通常指函数 |
环境变量
- 子进程继承父进程的环境变量,子进程的环境变量父进程无法使用
- 一旦子进程修改父进程的环境变量,会将新的值传递给孙子进程
- 一般在系统配置文件中使用
变量申明和赋值
- export name=value
- declare -x name=value
变量引用
$name、${name}
显示环境变量
env、printenv、export、declare -x
删除环境变量
ueset name
位置变量
位置变量:在bash shell中内置的变量,在脚本代码中调用通过命令行传递给脚本的参数
参数 | 作用 |
---|---|
$1,$2…${10}… | 对应第几个参数 |
$0 | 命令本身,包括路径 |
$* | 传递给脚本的所有参数,全部参数合为一个字符串 |
$@ | 传递给脚本的所有参数,每个参数为独立的字符串 |
$# | 传递给脚本的参数个数 |
举例:
[root@centos8 scripts ]#bash -n systeminfo.sh
[root@centos8 scripts ]#bash -x systeminfo.sh
+ RED='\e[1;31m'
+ GREEN='\e[1;32m'
+ END='\e[0m'
+ echo -e '\e[1;32m-------------Host systeminfo-----------------\e[0m'
-------------Host systeminfo-----------------
++ hostname
+ echo -e 'HOSTNAME: \e[1;31mcentos8.magedu.org\e[0m'
HOSTNAME: centos8.magedu.org
++ ifconfig
++ grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}'
++ head -n1
+ echo -e 'IPADDR: \e[1;31m192.168.20.128\e[0m'
IPADDR: 192.168.20.128
++ cat /etc/redhat-release
+ echo -e 'OVERSION: \e[1;31mCentOS Linux release 8.2.2004 (Core) \e[0m'
OVERSION: CentOS Linux release 8.2.2004 (Core)
++ uname -r
+ echo -e 'KERNAL: \e[1;31m4.18.0-193.el8.x86_64\e[0m'
KERNAL: 4.18.0-193.el8.x86_64
++ cut -d : -f2
++ lscpu
++ grep 'Model name'
++ tr -s ' '
+ echo -e 'CPU: \e[1;31m Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz\e[0m'
CPU: Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz
++ free -h
++ grep Mem
++ cut -d : -f2
++ tr -s ' ' :
+ echo -e 'MEMORY: \e[1;31m952Mi\e[0m'
MEMORY: 952Mi
++ lsblk
++ grep '^sd'
++ tr -s ' '
++ cut -d ' ' -f4
+ echo -e 'DIEK: \e[1;31m200G\e[0m'
DIEK: 200G
+ echo -e '\e[1;32m---------------------------------------------\e[0m'
---------------------------------------------
[root@centos8 scripts ]#bash systeminfo.sh
-------------Host systeminfo-----------------
HOSTNAME: centos8.magedu.org
IPADDR: 192.168.20.128
OVERSION: CentOS Linux release 8.2.2004 (Core)
KERNAL: 4.18.0-193.el8.x86_64
CPU: Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz
MEMORY: 952Mi
DIEK: 200G
---------------------------------------------