shell脚本基础知识一

本文详细介绍了Shell脚本的基础知识,包括shell的定义、脚本的作用,以及在Linux系统运维中的重要性。内容涵盖脚本创建与执行、变量、条件测试与比较,特别是深入讲解了if和case条件语句的语法与实战应用。通过实例展示了如何监控MySQL服务状态,以及使用case语句管理nginx服务。
摘要由CSDN通过智能技术生成

1  shell脚本基础知识

1.1  目录

  • shell简介
    • 什么是shell
    • 什么是shell脚本
    • shell脚本在linux系统运维工作中的地位
  • shell脚本的建立和执行
    • shell脚本的建立
    • shell脚本的执行
    • shell脚本开发的基本规范及习惯
  • shell脚本变量
    • 什么是变量
    • 环境变量
    • 普通变量
    • shell中的特殊位置参数变量
    • 特殊进程中的状态变量
  • shell脚本的条件测试与比较
    • 条件测试方法
    • test和[]
    • 文件测试
    • 字符串测试
    • 整数测试
    • 逻辑测试
  • if条件语句及实战
    • if条件语句语法
    • if条件语句实战
  • case条件语句及实战
    • case条件语句语法
    • case条件语句实战

1.2  shell简介

1.2.1  什么是shell

shell是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。

1.2.2  什么是shell脚本

Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。

1.2.3  shell脚本在linux系统运维工作中的地位

Shell脚本语言很适合用于处理纯文本类型的数据,而Linux系统中几乎所有的配置文件、日志文件(如NFS、Rsync、Httpd、Nginx、LVS、MySQL等),以及绝大多数的启动文件都是纯文本类型的文件。因此,学好Shell脚本语言,就可以利用它在Linux系统中发挥巨大的作用。_auto_0

1.3  shell脚本的建立和执行

1.3.1  shell脚本的建立

shell脚本在编辑器vi(vim)中编写 1.脚本开头

#!/bin/bash或#!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序 2.脚本注释 以#开头的行表示注释_auto_0由上图可见,sh为bash的软链接,大多数情况下,在脚本的开头使用“#!/bin/bash”和“#!/bin/sh”是没有区别的,但是更规范的写法是在脚本开头使用“#!/bin/bash”

1.3.2  shell脚本的执行

通常采用以下几种方法:
1.bash 脚本文件名或sh 脚本文件名;注意,脚本文件名需为绝对路径,如不是,则需进入文件所在目录后再执行
2.路径/脚本文件名 或./脚本文件名;注意,需先加可执行权限,使用chmod +x 脚本文件名
3.source 脚本文件名或. 脚本文件名;
前两种方法的执行方式其实是一样的,都是在当前父进程下的子进程中执行,子进程完成后,子进程中的各项变量或操作将会结束而不会传回到父进程中.
具体的区别可见下图:_auto_1

1.3.3  shell脚本开发的基本规范及习惯

脚本编写规范
1.第一行指定脚本解释器

#!/bin/bash或#!/bin/sh
2.脚本开头加版本和版权信息_auto_2

知识补充,添加版本信息的方法:
vim .~/vimrc
autocmd BufNewFile .py,.cc,.sh,.java exec ":call SetTitle()"
func SetTitle()
if expand("%:e") == "sh"
call setline(1,"#!/bin/bash")
call setline(2,"#Author:ZhangMiaomiao")
call setline(3,"#http://blog.csdn.net/moledyzhang")
call setline(4,"#Time:".strftime("%F %T"))
call setline(5,"#Name:".expand("%"))
call setline(6,"#Version:V1.0")
call setline(7,"#Description:")
endif
endfunc

3.尽量不用中文(不限于注释)
4.为便于标识,以.sh为扩展名
5.一行一条命令;若一行多个命令,用分号(;)分割;长命令可以使用反斜线字符(\)
6.放在固定路径下,文件名尽量描述清楚脚本的功能
良好的习惯:
1.成对符号,如‘’,“”,``,(),{},[]等尽量一次性写出来
2.[的右端和]的左端留空格
3.对于流程控制语句,应一次性写完,如
if ;then
内容
fi
再如:
for
do
内容
done
4.代码缩进
5.所有的单引号、双引号和反单引号等其他标点符号都需要在英文状态下输入
6.变量赋值时等号=左右两面不留空格

1.4  shell脚本变量

1.4.1  什么是变量

变量就是暂时存放数据的地方及数据标记,所存储的数据存放在内容空间当中,通过正确地调用内存空间中的变量的名字就可以取出与变量对应的数据。 使用变量的好处是使程序开发更加方便

1.4.2  变量类型

全局变量(环境变量):可以在创建的它们的shell及其派生出来的任意子进程shell中使用,环境变量又可以分为自定义环境变量和bash内置的环境变量,(环境变量一般用于定义shell运行环境,保证shell命令的正确执行.) 局部变量(普通变量):只能在创建他的shell函数或脚本中进行操作调用

1.4.3  环境变量

1.4.4  普通变量

1.变量的命名 变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z)
中间不能有空格,可以使用下划线(_)
不能使用标点符号
不能使用bash里的关键字(可用help命令查看保留关键字)
2.变量的赋值
变量名=值
变量名='值'
变量名="值"
变量名=`值`
单引号:所有转移符全部关闭,完整的反应括号中的内容

双引号:部分转义符关闭,但某些则保留(如:$)

反引号:反引号内荣作为一个系统命令并执行

3.变量的调用

1) $变量名

2) ${变量名}

1.4.5  shell中的特殊位置参数变量

_auto_0

1.4.6  特殊进程中的状态变量

_auto_2

1.5  shell脚本的条件测试与比较

1.5.1  条件测试方法

通常在脚本的编写过程中需要进行各种测试,然后根据测试结果执行不同的操作,有时也会与if等条件语句结合来完成测试 条件测试常用的语法_auto_3[[]]中可以使用通配符进行匹配 (())常用于整数运算

补充:逻辑操作符&&合||
例:
rm -rf / || echo "me is loser" (||的含义)
当rm -rf /执行不成功时,就输出me is loser
rm -rf / && echo "快跑路吧兄弟"
当rm -rf /执行成功时,就输出快跑路吧兄弟

1.5.2  文件测试

常见的文件测试操作符如下:_auto_4

1.5.3  字符串测试

常见的字符串测试操作符如下:_auto_5

1.5.4  整数测试

常见的整数测试操作符如下:_auto_6

1.5.5  逻辑测试

常见的逻辑测试操作符如下:_auto_7

1.6  if条件语句及实战

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值