后端开发必须掌握的Linux命令[Shell脚本篇]

Shell脚本相关命令

后端开发必须掌握的Linux命令[Shell脚本篇]_第1张图片

介绍

一句话说明shell脚本是个啥
shell脚本就是将多个shell指令汇集到一起去完成一个复杂的功能
类似windows下的批处理文件 一般以sh为文件后缀

语法

程序结构

一张图说明shell脚本的结构是怎样的
后端开发必须掌握的Linux命令[Shell脚本篇]_第2张图片
如上图所示
右边就是最简单的一个shell脚本 , 功能是打印出"Hello World
左边就是它对应的一个程序结构 ,依次是 shell版本声明 注释部分声明 环境变量声明 程序主体 退出返回
下面依次讲解

shell版本声明

第一行 #!/bin/bash 声明这个 脚本 使用的shell版本:
因为shell有很多种类型 比如sh,bash,csh,tcsh 
如果不指定版本 系统会不知道用哪一个版本的shell去处理这个脚本
所以会报错
一般linux发行版默认内置的是bash 所以一般是写#!/bin/bash

注释部分声明

说明程序的作者 功能 编辑时间等等信息

环境变量声明

环境变量是用来定义系统运行环境的一些参数的变量
比如每个用户不同的家目录(HOME)、邮件存放位置(MAIL)等。
具体可以看后端开发必须掌握的Linux命令[变量篇]中的讲解

其中比较重要的一个环境变量是PATH
它代表的是一系列路径的字符串集合
它默认存放了下面的路径地址 如 
usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin等等
比如当你在shell脚本中调用命令echo的时候
本质上系统就会从PATH存放的路径集合中
去寻找这些路径中是不是包含了命令echo对应的可执行文件
如果找的到 就执行 如果找不到的话你调用echo就会报错
这样就有一个问题 
假如你调用的一个比较陌生的命令
它所对应的文件路径 
不在PATH默认的路径集合中中

你就需要把它加入PATH (用冒号 等于号)
然后在对它重新声明为环境变量(用export)

  这样才可以 否则还是会报错的
 一般常用的命令比如ls echo 等等
 是默认已经包含在PATH变量的路径集合中了 所以开头不需要声明
 这里只是为了讲解程序的标准结构故引出来了

程序主体

普通语句

就是用普通的命令组成的语句

条件语句

简单的if …then

后端开发必须掌握的Linux命令[Shell脚本篇]_第3张图片
实例:
后端开发必须掌握的Linux命令[Shell脚本篇]_第4张图片

复杂的if …then

后端开发必须掌握的Linux命令[Shell脚本篇]_第5张图片
实例:
后端开发必须掌握的Linux命令[Shell脚本篇]_第6张图片

后端开发必须掌握的Linux命令[Shell脚本篇]_第7张图片
case…esac

后端开发必须掌握的Linux命令[Shell脚本篇]_第8张图片
实例:
后端开发必须掌握的Linux命令[Shell脚本篇]_第9张图片

循环语句

while do done

当while中的条件为真的时候就继续执行
后端开发必须掌握的Linux命令[Shell脚本篇]_第10张图片
实例:
后端开发必须掌握的Linux命令[Shell脚本篇]_第11张图片

until do done

当until中的条件为真的时候就结束执行
后端开发必须掌握的Linux命令[Shell脚本篇]_第12张图片
实例:
后端开发必须掌握的Linux命令[Shell脚本篇]_第13张图片

for…do…done

后端开发必须掌握的Linux命令[Shell脚本篇]_第14张图片
实例:
后端开发必须掌握的Linux命令[Shell脚本篇]_第15张图片

for…do…done的数值处理结构

后端开发必须掌握的Linux命令[Shell脚本篇]_第16张图片
实例:
后端开发必须掌握的Linux命令[Shell脚本篇]_第17张图片

退出返回

在我们这个例子当中,使用 exit 0 ,
这代表离开 script 并且回传一个 0 给系统,
所以执行完这个 script 后,若接着下达 echo $? 则可得到0 值!
利用这个 exit n (n 是数字) 的功能,我们还可以自定义错误返回值 从而使程序更聪明

执行

假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限

执行方法一:通过路径

1、相对路径
cd /data/shell
./hello.sh

2、绝对路径
/data/shell/hello.sh

执行方法二:通过sh或bash

sh
cd /data/shell
sh hello.sh


bash
cd /data/shell
bash hello.sh

执行方法三:通过 source 或.(点号)

source
cd /data/shell
source hello.sh

.
cd /data/shell
. hello.sh

区别:

1.绝对路径和相对路径没有什么区别,两种方式都需要提前赋予脚本以执行权限。

2.sh或者bash方式是把脚本当做bash的调用来处理,所以,脚本不需要有执行权限就可以执行。
前两种方式都是在当前shell中打开一个子shell来执行脚本内容,当脚本内容结束,则子shell关闭,回到父shell中。

3.source或者.方式是使脚本内容在当前shell里执行,而不是单独开子shell执行。

4.开子shell与不开子shell的区别就在于,环境变量的继承关系,如在子shell中设置的当前变量,
不做特殊通道处理的话,父shell是不可见的。
而在当前shell中执行的话,则所有设置的环境变量都是直接生效可用的。

调试

后端开发必须掌握的Linux命令[Shell脚本篇]_第18张图片

你可能感兴趣的:(Linux命令)