写shell脚本必备知识

写脚本必备知识

一、条件测试

条件测试是在写脚本中必不可少的知识,通过各类条件的检测,才可以写出if,eles等分支结构,做出一个通用性较高的脚本。
条件测试有对文件状态、字符串、数字进行检测。
条件测试有两种表示方式
1、test condition
2、[ condition ]
常用第二种方式,便于和if等分支结构一起运用。

1、测试文件状态

eg:
$ [ -w test.txt ]
$ echo $?
测试文件是否可写。
测试条件还有三种逻辑
1、-a 逻辑与
2、-o 逻辑或
3、 ! 逻辑非
eg:
$ [ -w test.txt -a -r test.txt ]
$ echo $?
以上为测试文件状态的举例,关于字符串的测试,与文件状态测试略有不同

2、测试字符串

首先关于字符串的测试有4个操作符,分别是=,!=,-n(非空字符串),-z(空字符串)。
eg:
$ [ “hello1” = “hello” ]
$ echo $?
eg:
$ [-z “hello”]
$ echo $?
以上为关于字符串的条件测试,还有关于数字的条件测试。

3、测试数值

关于数值的操作符可为:
-eq 数值相等。
-ne 数值不相等。
-gt 第一个数大于第二个数。
-lt 第一个数小于第二个数。
-le 第一个数小于等于第二个数。
-ge 第一个数大于等于第二个数。
eg:
$ [ “130” eq “130” ]
$ echo $?
3-1-2

4、关于expr的用法

expr可用于数据计算
eg:
expr 130 + 1
131
因此expr可以用于循环中的计数命令,当使用字符串进行计算时,会报错,这还可以用于判断数据是否为数字
3-1-1
在使用过程中遇到一些问题,最后发现是空格的问题,所以在使用shell过程中一定要要注意格式!

二、控制流结构

控制流结构是做一个通用性较高的脚本的关键点,通过条件的判断,加上控制流的多种分支结构,两者结合起来,就可以实现功能比较强大的脚本。

1、流控制

流控制有if、then、else提供条件测试,控制程序的走向。case通过匹配的方式控制程序走向。
if结构: 以下将写一个if结构来表示if结构的格式。
3-1-3
3-1-4
if结构可以判断很多东西,例如变量值测试,grep输出检查,文件拷贝输出检查,当前目录测试,文件权限测试,测试传递到脚本的参数,判断是否处于终端,变量设置测试,检测运行脚本用户(LOGNAME)···
在脚本中写的 `···` 当中的内容会由终端执行,重点这里不是单引号!
以上仅给出了if结构的基本用法,还有很多的条件检测,这里不一一列举了。
case结构: case结构与c语言中的case结构表达的意义基本相同,但是格式上有些不同,这里做一个实例将格式展示。
3-1-6
3-1-5

2、循环

流控制的分支结构进行了简单分析,做到了基本的格式了解。这一节将学习流控制的循环结构。
for循环结构: 还是通过具体实例,表示一个for循环结构的格式。
3-1-8
3-1-7
for循环结构与c语言中的for循环略有不同,shell中的for循环是循环将列表中的信息遍历,这点是shell中for循环的重点。
until循环结构
until结构与c语言中的do while结构类似,until结构条件在最后进行判断,所以至少会执行一次,适用于监视文件,until的基本结构为:
until 条件
do
命令
done
while循环结构
8-1
8-2
while还存在许多用法,这里不一一介绍,仅表示出基本用法,在之后的应用过程中再进行学习。

三、向脚本传递参数

1、如何传入参数

做一个通用性较高的脚本离不开传递参数,通过向脚本传递参数实现对脚本不同任务的选择,再配合分支结构,做出一个可处理多种任务的脚本。
特定变量$1 . . $9向脚本传递参数。$# 用于统计传递参数的个数,在运行脚本时,在脚本后面紧跟的就是输入的参数,有空格隔开,分别是$1~$9。

2、shift的用法

了解完如何向脚本传入参数之后,还有一个很好用的小技巧,是shell中传递参数必备的知识,即shift的用法
shift可以是参数向左移动一位,即传入多个参数时,我们仅需要调用$1,每调用完一次,就可以运行一次shift,下次调用$1时就是调用的之前的$2,下面进行一个演示。
8-3
8-
8-4

四、总结

经过以上的基本的学习,已经能够实现写一个比较简单的脚本,具体到工作中还需要灵活运用各种分支结构和各种命令,在下一篇脚本分析中,将分析现有的一个脚本,通过这个脚本,写出自己的脚本。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

塔通天

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

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

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

打赏作者

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

抵扣说明:

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

余额充值