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

Shell脚本相关命令

在这里插入图片描述

介绍

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

语法

程序结构

一张图说明shell脚本的结构是怎样的
在这里插入图片描述
如上图所示
右边就是最简单的一个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

在这里插入图片描述
实例:
在这里插入图片描述

复杂的if …then

在这里插入图片描述
实例:
在这里插入图片描述

在这里插入图片描述
case…esac

在这里插入图片描述
实例:
在这里插入图片描述

循环语句
while do done

当while中的条件为真的时候就继续执行
在这里插入图片描述
实例:
在这里插入图片描述

until do done

当until中的条件为真的时候就结束执行
在这里插入图片描述
实例:
在这里插入图片描述

for…do…done

在这里插入图片描述
实例:
在这里插入图片描述

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

在这里插入图片描述
实例:
在这里插入图片描述

退出返回

在我们这个例子当中,使用 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中执行的话,则所有设置的环境变量都是直接生效可用的。

调试

在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值