返回顶部

shell脚本基础

目录

 

 

 

 

 


一.什么是shell?

Shell 是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把 用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出 屏幕返回给用户。

 

二.什么是shell脚本

2.1概念

  • 将要执行的命令按顺序保存到一个文本文件
  • 给该文件可执行权限,便可运行 (绝对路径可以执行)
  • 可结合各种shell控制语句以完成更复杂的操作

2.2shell脚本应用场景

  • 重复性操作
  • 批量事务处理
  • 自动化运维
  • 服务运行状态监控
  • 定时任务执行

2.3shell脚本的构成

  • 脚本声明
  • 注释信息
  • 可执行语句
  • 第一句#!/bin/bash

2.4执行shell执行

  • 绝对路径
  • 相对路径
  • sh脚本路径
  • source脚本路径 与.脚本路径相同

注:其中绝对路径与相对路径执行shell脚本时,该文件必须 具备可执行权限(x)

2.5shell脚本开头第一行

规范的 Shell 脚本第一行会指出由哪个程序(解释器)来执行脚本中的内容。在 linuxbash 编程中一般为:

  1. #!/bin/bash
  2.  或
  3. #!/bin/sh

2.5.1不同语言脚本的开头写法

  1. #!/bin/sh
  2. #!/bin/bash
  3. #!/usr/bin/awk
  4. #!/bin/sed
  5. #!/usr/bin/tcl
  6. #!/usr/bin/expect
  7. #!/usr/bin/perl
  8. #!/usr/bin/env python

2.6shell脚本注释

在 Shell 脚本中,跟在#后面的内容表示注释。注释部分不会被执行,仅给人看。 注释可以自成一行,也可以跟在命令后面,与命令同行。要养成写注释的习惯, 方便自己与他人。
最好不用中文注释,因为在不同字符集的系统会出现乱码

 

三.shell脚本编程条件语句

3.1条件测试

方法①test 条件表达式

方法②格式:[空格 操作符 空格 文件或目录 空格 ]

常用的测试操作符:

  1. -d:测试是否为目录
  2. -e:测试目录或文件是否存在
  3. -f:测试是否为文件
  4. -r:测试前用户是否可读
  5. -w:测试当前用户是否可写
  6. -x:测试当前用户是否可执行
  7. -s:测试文件大小非0时为真(若为非空文件,则为真
  8. -u:测试是否具有SUID属性
  9. -g:测试是否具有SGID属性
  10. -k:测试是否具有sticky bit 粘滞位属性
  11. -nt:测试第一个文件是否比第二个文件新
  12. -ot:测试第一个文件是否比第二个文件旧
  13. -ef:测试第一个文件是否与第二个文件同一个文件

整数测试

[空格 整数1 操作符 整数2 空格]

常用测试操作符:

  1. -eq:等于
  2. -ne:不等于
  3. -gt:大于
  4. -lt:小于
  5. -ge:大于或等于
  6. -le:小于或等于

逻辑测试

[空格 表达式1 空格] 操作符 [ 空格 表达式2 空格]

常用的测试操作符

-a或&& :逻辑或,“而且”的意思

-o 或||: 逻辑或,“或则”的意思

!:逻辑否

 

 

四.shell脚本语句

4.1if语句

格式:

  1. if [条件](条件测试操作)
  2.     then  (命令序列)
  3. if

elif(条件测试操作2)

else(命令序列2,否则)

 

4.2case语句

多用于启动脚本,功能菜单

格式:

case 变量值 in

模式1)

   命令序列

   ;;

模式2)

   命令序列

   ;;

*)

  默认命令序列

esac

4.3shell函数

作用:将命令序列按格式写在一起,方便重复使用命令序列

格式:

[function] 函数名 (){

    命令序列

    return(跳出当前函数循环)

}

调出方式:

函数名 [参数1] [参数2]

4.4for循环语句

作用:读取不同的变量值,以逐个执行同一组命令

格式:

for 变量名 in 取值列表

do

  命令序列

done

取值列表的设置

  直接输入,以空格分割

4.5while循环语句

作用:重复测试某个条件,只要条件成立则反复执行

格式:

while 条件测试操作

do

  命令序列

done

 

注:while :  或者 while(ture)  无限循环

 

posted @ 2018-11-04 22:26  五更琉璃丶  阅读(142)  评论(0编辑  收藏  举报