shell脚本
2023-02-18 16:34:39 时间
shell脚本创建过程
-
第一步:使用文本编辑器来创建文本文件
-
第二步:加执行权限
-
第三步:运行脚本
说明:
-
第一行必须包括shell声明序列:#!
-
添加注释,注释以#开头
-
给予执行权限,在命令行上指定脚本的绝对或相对路径
-
可以直接运行解释器,将脚本作为解释器程序的参数运行
shell脚本的编写规则:
首行shebang机制,用户指定shell脚本后面需要使用的解释器
shell 脚本调试
bash -n
只检测脚本中的语法错误,但无法检查出命令错误,但不真正执行脚本
bash -x
把脚本中的每条命令的执行情况打印出来
#语法错误:会导致后续命令不执行
使用bash -n
#命令错误:后续命令依然会执行
使用bash -x 来跟踪命令的执行过程。
#逻辑错误:输出结果不对
使用bash -x 检查
shell脚本实践
范例:显示系统信息
[root@CentOS7 ~]# cat 1.sh
#!/bin/bash
ED="\E[1;31m"
GREEN="\E[1;32m"
END="\E[0m"
echo -e "$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" ##显示ip地址
echo -e "OSVERSION: $RED`cat /etc/redhat-release`$END" #系统版本信息
echo -e "KERNEL: $RED`uname -r`$END" #内核版本
echo -e "CPU: $RED`lscpu|grep 'Model name'|tr -s ' '|cut -d : -f2`$END" #CPU版本
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" #磁盘信息
echo -e "$GREEN---------------------------------------------------------$END"
[root@CentOS7 ~]# bash 1.sh
----------------------Host systeminfo--------------------
HOSTNAME: CentOS7
IPADDR: 10.0.0.17
OSVERSION: CentOS Linux release 7.6.1810 (Core)
KERNEL: 3.10.0-957.el7.x86_64
CPU: Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
MEMORY: 3.8G
DISK: 50G
---------------------------------------------------------
实现每日将 /etc/ 目录备份到 /backup/etcYYYY-mm-dd中
[root@CentOS7 ~]# cat 1.sh
#!/bin/bash
BACKUP=/BACK
SRC=/etc
DATE=`date +%F`
if ! test -e $BACKUP ;then #如果这个目录文件不存在
mkdir $BACKUP
echo hello workd
fi
mkdir ${BACKUP}/${DATE}
cp -av $SRC ${BACKUP}/${DATE}
echo backup is finished
查看进程的环境变量:
cat /proc/PID/environf
[root@CentOS7 ~]# cat /proc/9204/environ |tr '\0' '\n'
HOME=/root
USER=root
SHELL=/bin/bash
TERM=linux
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAIL=/var/mail/root
LOGNAME=root
XDG_SESSION_ID=1
XDG_RUNTIME_DIR=/run/user/0
XDG_SEAT=seat0
XDG_VTNR=1
相关文章
- [NetWork] 计算机网络基本概述
- 杨校老师课堂之MySQL数据库面试题【开发工程师面试前必看】
- AI编程登上Science封面:AlphaCode打竞赛,三分之二赛题一遍过,成绩超过一半程序员
- 说说真实Java项目的开发流程,以及面试前的项目准备说辞
- 案例 | 数字孪生5G智慧港口三维可视化系统
- 为什么很多候选人投出去的简历石沉大海(面向Java方向)
- 面试前如何准备数据库方面的说辞
- 全同胞家系如何计算遗传力及育种值
- Spring面试点汇总
- 遗传进展公式计算方法
- NCII试验 计算配合力和遗传力的方法
- 开局一张图 | 介绍PRS的计算步骤
- 如何使用plink进行二分类性状的GWAS分析并计算PRS得分
- 如何计算连续性状的PRS得分
- 【C语言经典面试题】这样的char * 定义怎么回事
- 如何计算配合力+方差组分+遗传力
- ESXI 通过 SSH 的方式进入物理接显示器的界面
- 苹果App Store 审核应用被拒 我所碰到的问题集合
- 微信小程序 修改/使用上一个页面的data数据及方法 getCurrentPages()获取页面栈的使用 常见页面展示
- MONGODB WiredTiger 页面大小与功能及 wiredTiger 版本与 MONGODB 的关系