概述
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中执行的话,则所有设置的环境变量都是直接生效可用的。
调试
最后
以上就是炙热曲奇为你收集整理的linux循环处理脚本命令,后端开发必须掌握的Linux命令[Shell脚本篇]的全部内容,希望文章能够帮你解决linux循环处理脚本命令,后端开发必须掌握的Linux命令[Shell脚本篇]所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复