Shell脚本入门 01:格式与基础使用

目的

通常在终端中操作Linux都是一行一行输入命令进行的,每输入一行执行后根据结果再输入下一条命令。这种操作在简单使用或是在单次使用中没什么问题,但是如果需要进行复杂的工作或是多次进行重复的操作的时候就比较费时费力了。这些情况下可以把要执行的操作命令都写到一个文件中,让Shell读取文件然后执行其中命令。这就是Shell脚本。

Shell脚本的编写和其它脚本语言编写程序很像,也支持变量、数组、条件选择、循环、函数、模块化等功能语法。这篇文章就对Shell脚本的一些基础的格式与使用方法进行介绍。

脚本格式

Shell脚本主要就是把一些命令行操作整合起来使用,所以最重要的格式就是终端中对于命令使用的格式,这个算是比较基础的Linux使用技能了,这里就不进行介绍了,除了这个内容外Shell脚本中还有一些特有的格式。

Shell脚本文件通常是以 .sh 为后缀名的,比如 helloworld.sh

Shell脚本内容编写上也有一些格式,这里通过下面的例子进行说明:

#!/bin/bash
echo "Hello World !"  # 这是一条语句

一般来说Shell文件的第一行都是以 #! 开头的,后面跟的是用于读取执行该脚本文件的解释器(即Shell程序)的路径,常见的写法有 #!/bin/bash#!/bin/sh ,现在的Linux发行版中常用的Shell程序是bash,sh通常也是指向bash的,所以这两种写法现在来说差别不大。

Shell脚本中 # 和它后面的内容都是注释(第一行和转义的字符串除外)。

补充一点:在很多Shell脚本中经常在较考前位置可以看到 set -e 语句,它的作用是如果后面的命令执行遇到错误就立即退出脚本执行。

脚本使用

脚本文件的使用常见的有下面几种方式:

将Shell脚本作为程序运行:
这是最常用的方式,只要给脚本文件可执行权限后就可以作为程序来执行了,比如下面演示:
在这里插入图片描述

将Shell脚本作为Shell程序的参数来解释执行:
在这里插入图片描述

使用source命令读取Shell脚本内容并执行:
source是一个内置命令,这个命名会读取脚本文件内容然后执行该内容。使用方法为 source filename 或者 . filename ,后一种方法注意中间有空格。
在这里插入图片描述

几种方式区别:
上面几种方法中后面两种方法脚本文件不需要给可执行权限。

前面两种方法会新开一个进程执行操作,而最后一种方法会在当前终端的进程中执行。Linux中 $$ 变量表示当前进程的进程号,下面使用此进行测试:
在这里插入图片描述

exit 命令

exit 命令用于退出当前Shell进程

exit 可以接受一个整数值作为参数,代表退出状态,取值 0~255 。如果不指定,默认状态值是 0 。通常情况下退出状态 0 表成功,其它数值表示失败。可以使用 $? 来获取上一条命令或脚本的退出状态。

在这里插入图片描述
上面演示中最后一次启动脚本的方式脚本命令和当前终端实在同一进程的,所以遇到exit终端就被关闭了。

read 命令

read 命令用来从标准输入中读取数据并赋值给变量。其语法为 read [-options] [variables] ,常用选项说明如下:

选项说明
-a把读取的数据赋值给数组 array,从下标 0 开始
-d用指定字符串指定读取结束的位置,而不是一个换行符(读取到的数据不包括指定字符串)
-p输出不换行的提示信息
-r不替换输入的转义符
-s不在屏幕上显示输入的字符
-t设置超时时间,单位为秒
如果用户没有在指定时间内输入完成,那么 read 将会返回一个非 0 的退出状态,表示读取失败
-u使用文件描述符作为输入源,而不是标准输入,类似于重定向

在这里插入图片描述

如果没有变量来接收输入的话,输入内容会被放在变量 REPLY 中:
在这里插入图片描述

组命令

多个命令可以合成以组整体上依次执行,主要有下面两种写法:

{ command1; command2; command3; ... }
(command1; command2; command3; ...)

第一种方式花括号和命令之间必须有一个空格,并且最后一个命令必须用一个分号或者一个换行符结束。这种方式命令会在当前Shell进程中执行。

第二种方式命令会在子Shell中执行。(子Shell是继承了父进程中的函数、变量的子进程,但在子Shell对这些的修改不会影响到父进程)

组命令可以结合重定向和管道等使用。

在这里插入图片描述

总结

Shell脚本的编写格式和使用本身还是很简单的,稍微复杂的是内容编写上的一些语法规则等,这些内容将在接下来的文章中进行介绍。

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naisu Xu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值