我是靠谱客的博主 炙热曲奇,最近开发中收集的这篇文章主要介绍linux循环处理脚本命令,后端开发必须掌握的Linux命令[Shell脚本篇],觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Shell脚本相关命令

f979bcd7080b2c4e859bf076e2ca4ce3.png

介绍

一句话说明shell脚本是个啥

shell脚本就是将多个shell指令汇集到一起去完成一个复杂的功能

类似windows下的批处理文件 一般以sh为文件后缀

语法

程序结构

一张图说明shell脚本的结构是怎样的

70051c5957b5b1bd9e6eb5b844d784b1.png

如上图所示

右边就是最简单的一个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

d1ea8427b80b98a0d994b999fba7407e.png

实例:

57adf4253e5e453e41ec9d06af9ea16a.png

复杂的if …then

8b39fdd06d49dd1bdd92747d1ea6d6f0.png

实例:

eee335e0cceb5b2fc1f7dd0218e67960.png

7f5c106f5d934ee9f729accdb381c02b.png

case…esac

a8092e26a2a4fdd960d9fd792dad9a51.png

实例:

9c9e7e3717bef172ad962217cfbf4457.png

循环语句

while do done

当while中的条件为真的时候就继续执行

2ab01e3034341d7eb7d85fdba1147026.png

实例:

df9375c2b758c0ca0bedf094d5455ff0.png

until do done

当until中的条件为真的时候就结束执行

e74f8ef0151910302685b9f71e0d3e29.png

实例:

7e470377c610209712deb9d5aadccbd3.png

for…do…done

c07b43d4efb098cceeba106f51a29615.png

实例:

995229fd1a7df098b32e8cdd0a964cf0.png

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

e2001ad50ae1dc0391b809ae44ddf10f.png

实例:

74498bc50e4d54b53495dadd74eb1acb.png

退出返回

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

调试

c84258b7a4a662d066d68e831ce08d6a.png

最后

以上就是炙热曲奇为你收集整理的linux循环处理脚本命令,后端开发必须掌握的Linux命令[Shell脚本篇]的全部内容,希望文章能够帮你解决linux循环处理脚本命令,后端开发必须掌握的Linux命令[Shell脚本篇]所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部