Shell脚本编写

shell脚本编写

  • 什么是shell
shell脚本(shell script)又称Shell命令稿、程序化脚本,是一种计算机程序使用的文本文件,内容由
一连串的shell命令组成,经过Unix Shell直译其内容后运作(简而言之将一个或者多个命令写文件里执行)
  • 交互式和非交互式
[root@ITTLDOG /date/shell]# echo $?
0
[root@ITTLDOG /date/shell]# cat ITDOG.sh 
#!/bin/bash
echo $?
[root@ITTLDOG /date/shell]# sh 1.sh 
0
  • 什么是Shell脚本
1、Linux系统命令的堆积,按照编写的顺序执行
2、特定的格式+特定的语法+系统的命令=文件
3、文件结尾依照.sh为结尾
  • Shell脚本能干什么
1、 基础的配置    系统的初始化  系统更新  内核调整  网络  时区   优化
 
2、安装软件程序    Nginx   MySQL Redis  Rsync NFS  Docker k8s
 
3、 配置的变更    Nginx PHP Redis  MySQL  conf 配置文件的变更
 
4、 业务的部署    Shell配合Git、jenkins实现自动化的部署  代码上线 回滚  
 
5、 日常备份   	 脚本备份+定时任务   企业的备份   
 
6、 信息采集 	 Zabbix监控 + Shell取值  对硬件  系统状态 服务  
 
7、 日志分析      ELK  取值  排序 去重 统计 分析 
 
8、 服务的扩容或者缩容  
 
		扩容: 添加集群节点     监控CPU 负载  内存  >80% 触发的动作  脚本  
		
		缩容: 减少集群节点     监控CPU 负载  内存  <20%  触发的动作  把某一个节点进行移除		
  • Shell脚本的规范以及好习惯
1、创建一个目录专门用于存放脚本
[root@ITTLDOG ~]# mkdir -p /date/shell/
[root@ITTLDOG ~]# 
[root@ITTLDOG /date/shell]# pwd
/date/shell

2、强烈建议使用vi或者vim编辑器进行编写脚本

3、脚本最好以.sh结尾(因为好识别,工作的话脚本不建议用1.sh或者a.sh命名,涉及安全大厂会考核)

4、脚本的首行加上幻数,指定好具体的命令解释器进行解释脚本里的命令
[root@ITTLDOG /date/shell]# cat ITDOG.sh 
#!/bin/bash #默认为bash执行

5、首行的#! 称之为幻数 /bin/bash 称之为命令解释器
必须放置在脚本的首行,在其他行都表示注释

6、编写脚本的时候附带作者和版权信息(便于找到谁写的)

7、脚本注释 #号后面的内容都是注释 脚本不要使用中文进行编写 尽量使用英文禁止使用拼音方式编写

8、编写的过程中保持良好的习惯,使用成对的符号的时候 "" {} [] ()尽量一次编写完毕

9、成对的语法个格式,要一次编写完毕 if; then fi  、for i in do done

  • Shell 脚本的执行方式
Shell脚本是从上到下、从左到右一次依次执行每一行的命令,执行完一条命令
之后,再执行下一条命令。如果在脚本中遇到镶嵌的子脚本,执行子脚本之后再
去执行父脚本未执行的内容。


1、bash script-name 或者 sh script-name
#不需要执行权限,自己生成一个窗口环境执行命令

2source script-name 或者 . script-name
#不需要执行权限,将脚本中的代码放入到当前环境下执行

3、 path/script-name 或者 ./script-name
#路径执行 需要执行权限 自己生成一个窗口环境执行命令

4cat script-name | bash
#不需要执行权限 自己生成一个窗口环境执行命令

5bash < script-name 或者 sh < script-name #不需要执行权限 自己生成一个窗口环境执行命令

  • 登录式Shell和非登录式shell
1、登录式和非登录式的区别

登录式Shell:通过用户和密码的方式进行登录进入的Shell

非登录式Shell:不需要用户和密码的方式进入的Shell bash

执行exit命令时,可以退出的是登录式Shell 不能退出的是非登录式shell

执行logout命令时, 只能退出登录式Shell,不能退出非登录式Shell

脚本就是一个非登录式Shell

非登录式Shell不会执行/etc/profile这个文件
2、Shell执行过程中的配置文件

/etc/profile  
 
/etc/profile.d/*sh
 
/root/.bash_profile
 
/etc/bashrc
 
/root/.bashrc
3、登录式shell的配置文件执行顺序

/etc/profile
/etc/profile.d/*sh
.bash_profile
.bashrc
/etc/bashrc
4、非登录式Shell的配置文件的执行顺序

.bashrc
/etc/bashrc
/etc/profile.d/*sh
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值