Linux 操作系统(五)——shell脚本

目录

  • shell 语法概述
    • shell脚本 概念
  • shell 脚本使用基础
    • 脚本存放目录
  • shell 脚本使用变量
    • 1. 使用变量
    • 2. 数学运算
    • 3. 用户交互输入
  • shell 脚本使用判断
    • 1. 脚本选项使用
  • 判断表达式
    • 1. shell中的逻辑判断
    • 2. 字符串判断
    • 3. 文本判断
    • 2. 字符串判断
  • case 逻辑判断
  • for 循环、while循环、until循环
    • for 循环
    • while循环
    • until循环
  • shell 中的函数
  • break 中断、continue中断、exit中断

shell 语法概述

  • echo 相当于cout,print

shell脚本 概念

  • shell 脚本并不是真正的编程语言,因为 SHELL脚本 在 Linux 的 shell 中运行

  • 实际上 shell 脚本就是 命令的集合,类比于 windows 的批处理命令

比如要实现下述操作:

  1. 进入 /tmp 目录
  2. 列出当前目录下的文件
  3. 把所有文件复制到 /root
  4. 删除当前目录下的文件

完成上述操作,需要执行4个命令,要按4次回车。如果要求你每天都做重复的操作,就会显得很麻烦
因此我们可以将上述4步操作集成到一个shell脚本中,一次完成

shell 脚本使用基础

脚本存放目录

  • shell脚本 是提高服务器管理维护的工具
  • 通常优秀的管理员会将自己编写的脚本放在一个固定的目录,便于维护
  • 简单上手一下:
    • cd/usr/local/sbin // 假定这个目录是我们放置shell的目录
    • vim first.sh
      在 vim 中,使用root用户输入下面内容并保存
      Linux 操作系统(五)——shell脚本_第1张图片
    • chmod +x first.sh:给脚本赋予执行权限,脚本因为是可执行文件,必须要有执行权限
    • ./first.sh:执行脚本
      Linux 操作系统(五)——shell脚本_第2张图片
      脚本完成了两件事,1:显示时间;2:显示 ”Hello World!“

shell 脚本使用变量

1. 使用变量

编写下面脚本vim ./variable.sh
Linux 操作系统(五)——shell脚本_第3张图片
有两处错误,更正后如下:
Linux 操作系统(五)——shell脚本_第4张图片
运行结果如下:
请添加图片描述

2. 数学运算

  • 注意数学计算要用中括号[ ]括起来
  • 数学运算前也要加 $
    Linux 操作系统(五)——shell脚本_第5张图片

3. 用户交互输入

用户输入x,y,计算x+y并输出:
Linux 操作系统(五)——shell脚本_第6张图片
请添加图片描述

shell 脚本使用判断

1. 脚本选项使用

编写脚本 option.sh
在这里插入图片描述
运行如下:
在这里插入图片描述
其中,$1, $2 为跟在脚本后的第一个、第二个选项;$0 代表脚本自身的名字
Linux 操作系统(五)——shell脚本_第7张图片
在这里插入图片描述

判断表达式

1. shell中的逻辑判断

  • shell中使用 if 进行逻辑判断
    在这里插入图片描述
    注意[ ]前后有空格,不能少
    在这里插入图片描述
  • 逻辑表达式用 [ ],且前后有空格,不能少
变量,a,b均为整数 含义
a -eq b return a == b
a -ne b return a != b
a -gt b return a > b
a -lt b return a < b
a -ge b return a >= b
a -le b return a <= b

Linux 操作系统(五)——shell脚本_第8张图片
对上述逻辑改进,

  • && 表示且; || 表示或
  • elif:表示 else if

2. 字符串判断

变量,s1,s2均为 字符串 含义
-z s1 return s1.empty()
-n s1 return !s1.empty()
s1==s2 return s1==s2
s1!=s2 return s1!=s2

3. 文本判断

2. 字符串判断

变量,file为文本 含义
-a file 是否存在该文件,等同于-e
-b file 文件类型是否为专用设备
-c file 文件类型是否为 签字字符
-d file 文件类型是否为文件夹
-f file 文件类型是否为普通文件
-O file 大写字母 O O O 文件是否拥有当前文件
-r -w -x 文件是否 可读、可写、可执行
-s 文件是否存在,是否大于0字节

case 逻辑判断

  • 为什么要增加一个case逻辑判断了,if 不够用吗?
    答:if 逻辑判断用于条件比较少,比较清晰的情况

  • 当逻辑判断条件比较多的时候,我们使用 case 逻辑
    case 语法如下:

case $var in
value1)
	command1
	;;
value2)
	command2
	;;
*)
	command3
	;;
esac

例如:case常用于服务管理,如/etc/init.d/network

#! /bin/bash
read -p "input a number:" Num
case $Num in
	1) echo 'You select 1'
	;;
	2) echo 'ou select 2'
	;;
	3) echo 'You select 3'
	;;
	4|5) echo 'ou select 4 or 5'
	;;
	*) echo 'default'
	;;
easc

for 循环、while循环、until循环

for 循环

语法如下

for 变量名 in 循环条件;do
	command
done

代码如下:

#!/bin/bash
for i in 'seq 1 5';do
	echo $i
done

注释:seq 1 5 表示 1 2 3 4 5 五个数,这里是反引号,表示系统命令

关于系统命令,我们也可以这样调用
Linux 操作系统(五)——shell脚本_第9张图片

while循环

语法如下

while 条件;do
	command
done

代码如下
Linux 操作系统(五)——shell脚本_第10张图片

until循环

语法与while类似,不过until是退出条件,如下

until 条件;do
	command
done

shell 中的函数

在实际 shell 使用过程中,我们经常会重复调用同样功能的代码,这段代码可以写成一个函数
Linux 操作系统(五)——shell脚本_第11张图片
Linux 操作系统(五)——shell脚本_第12张图片

break 中断、continue中断、exit中断

  1. break
    Linux 操作系统(五)——shell脚本_第13张图片
    Linux 操作系统(五)——shell脚本_第14张图片

  2. continue
    Linux 操作系统(五)——shell脚本_第15张图片
    Linux 操作系统(五)——shell脚本_第16张图片

  3. exit
    exit命令,直接退出整个shell脚本。
    Linux 操作系统(五)——shell脚本_第17张图片
    Linux 操作系统(五)——shell脚本_第18张图片

你可能感兴趣的:(Linux操作系统,linux,服务器,运维)