• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

Shell脚本编程学习——Shell的基本概述【显哥出品,必为精品】

Shell编程 lixian 5年前 (2020-04-20) 1056次浏览 0个评论 扫描二维码
文章目录[隐藏]

一、Shell的基本概述

1.什么是shell

Shell脚本(Shell Script)又称Shell命令稿、程序化脚本,是一种计算机程序使用的文本文件,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作。

2.交互式和非交互式

[root@xian ~]# echo  $-
himBH
[root@xian ~]# cat test.sh 
#!/bin/bash
echo $-
[root@xian ~]# sh test.sh 
hB
h		hashall     #Shell会记录你执行过的命令路径,避免每次都要查询  

i		interactive	#这个选项就是说明你是一个交互式Shell

m		monitor		#打开监控模式, 通过监控去控制进程的生命周期

B		braceexpand	#大括号扩展  { } 

H		history		#命令的历史记录  

3. 什么是Shell脚本

1. 系统的命令的堆积,按照顺序执行

2. 特定的格式 + 特定的语法 + 系统的命令 = 文件

3. 建议以.sh为结尾 .py

4. Shell脚本能干什么

1. 基础的配置    系统的初始化  系统更新  内核调整  网络  时区   优化

2. 安装软件程序   LNMP LAMP Nginx  PHP  MySQL Redis  Rsync NFS  

3. 配置的变更    Nginx PHP Redis  MySQL  conf 配置文件的变更

4. 业务的部署    Shell配合Git、jenkins实现自动化的部署  代码上线 回滚  

5. 日常备份   	 脚本备份+定时任务   企业的备份   

6. 信息采集 	 Zabbix监控 + Shell取值  对硬件  系统状态 服务  

7. 日志分析      ELK  取值  排序 去重 统计 分析 

8. 服务的扩容或者缩容  

		扩容: 添加集群节点     监控CPU 负载  内存  >80% 触发的动作  脚本  
		
		缩容: 减少集群节点     监控CPU 负载  内存  <20%  触发的动作  把某一个节点进行移除
		

二、Shell脚本的规范及习惯

1. 脚本放在统一的一个目录  

/service/scripts/

2. 推荐使用vim进行编辑脚本   高亮显示 

3. 以.sh为结尾

4. 脚本的第一行加上幻数  指定哪一个命令解释器进行解释脚本的命令   #!/bin/bash   默认以bash执行   

5. 开头的#!/bin/bash   #!称之为幻数     /bin/bash 就是命令解释器   必须放在代码的第一行 在其他行都是注释

6. 写脚本的时候附带作者和版权信息  

7. 脚本注释  #后面的内容都是注释    最好不要使用中文  建议使用英文    禁止使用拼音   

8. 成对的符号,要一次书写完成   ""  {}  ''  [] 

9. 成对的语法格式,要一次书写完成  if  ;then  fi    for  i  in   do  done

三、Shell脚本的执行方式

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

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

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

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

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

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

四、登录式Shell和非登录式Shell

1.登录式Shell和非登录式Shell

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

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

执行exit命令时, 可以退出登录式Shell和非登录式hell

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

脚本就是一个非登录式Shell

非登录式Shell不会执行/etc/profile这个文件

2.配置文件的执行顺序

/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

五、Shell的变量介绍

什么是变量

就是传递数据的一种方法,

简单理解: 用一个固定的字符串去表示一个不固定的内容,便于后期引用

变量名的规范

采用驼峰法书写

变量的名称不要跟系统中的命令或者变量有冲突

名称要求: 字母、数字、下划线组成 尽量使用字母开头,变量名称最好具有一定的含义

前面是变量名称 = 等号是赋值 后面的就是定义的值 等号两边不能存在空格。

变量的定义方式

1、用户自定义变量: 用户自己定义的变量

2、系统环境变量: 系统已经定义好的变量,变量记录的是操作系统的一些信息 全部是由大写字母组成的

全局变量 和 局部变量

3、位置参数变量: 向脚本中进行传递参数,变量名不能自己定义,变量的作用也是固定的 $1 $2

4、预定义变量: bash已经定义好的变量,变量名不能自己定义,变量的作用也是固定的,值不是自己设置的 $@ $* $? $0

六、变量的定义实践

1. 用户自定义变量,只在当前环境生效

[root@xian ~]# Name=lx
[root@xian ~]# echo $Name
lx
[root@xian ~]# Name=li xian
-bash: xian: command not found
[root@xian ~]# Name='li xian'
[root@xian ~]# echo $Name
li xian

2.单双引号和不加引号及反引号的区别

(1)反引号,先执行反引号里面的命令,将执行的结果交给外面的命令 里面必须是命令
(2)单引号 强引用 单引号里面是什么,得到的也是什么
(3)双引号 弱引用 里面是什么内容,也会得到什么内容 但是他会解析变量 解析特殊字符
(4)不加引号 当变量的值出现空格时,不会将值看做是一个整体,不支持通配符


本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:Shell脚本编程学习——Shell的基本概述【显哥出品,必为精品】
喜欢 (1)

您必须 登录 才能发表评论!