记录SHELL脚本编写的基本语法

实验环境
centos8.2 pstree
yum install -y psmisc

shell脚本属于动态弱类型语言

变量定义和引用

类型 举例
普通变量 仅当前shell生效,其shell子进程和其他shell都不生效
环境变量 当前shell及其shell子进程生效
本地变量 当前shell进程中某代码片段,通常指函数

环境变量

  1. 子进程继承父进程的环境变量,子进程的环境变量父进程无法使用
  2. 一旦子进程修改父进程的环境变量,会将新的值传递给孙子进程
  3. 一般在系统配置文件中使用

变量申明和赋值

  1. export name=value
  2. 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
---------------------------------------------

猜你喜欢

转载自blog.csdn.net/weixin_50904580/article/details/109156832