Linux加强篇-Shell命令脚本

目录

 ⛳️推荐

编写Shell脚本

编写简单的脚本

接收用户的参数

判断用户的参数


 ⛳️推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站

编写Shell脚本

Shell脚本命令的工作方式有下面两种。

交互式(Interactive):用户每输入一条命令就立即执行。

批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命令。

通过查看SHELL变量可以发现,当前系统已经默认使用Bash作为命令行终端解释器

[root@localhost ~]# echo $SHELL

/bin/bash

编写简单的脚本

查看当前所在工作路径并列出当前目录下所有的文件及属性信息,第一行的脚本声明(#!)用来告诉系统使用哪种Shell解释器来执行该脚本;第二行的注释信息(#)是对脚本功能和某些命令的介绍信息,第三、四行的可执行的Linux命令。

[root@localhost ~]# vim example.sh

#! /bin/bash

#for example by weihongbin

pwd

ls -alh

[root@localhost ~]# bash example.sh  

/root

total 2.1G

dr-xr-x---.  17 root    root    4.0K Nov 15 14:05 .

dr-xr-xr-x.  18 root    root     254 Nov  8 15:40 ..

-rw-r--r--.   1 root    root    560M Nov  8 15:53 560

也可以用./来执行bash文件

接收用户的参数

Linux系统中的Shell脚本语言内设了用于接收参数的变量,变量之间使用空格间隔,

对应的是当前

脚本程序的名称,0对应的是当前Shell脚本程序的名称,0对应的是当前Shell脚本程序的名称,#对应的是总共有几个参数,

对应的是所有位置的参数值,∗对应的是所有位置的参数值,*对应的是所有位置的参数值,?对应的是显示上一次命令的执行返回值,而

、1、1、2、$3……则分别对应着第N个位置的参数值

image

[root@localhost ~]# vim example.sh

#! /bin/bash

#for example by weihongbin

echo "当前脚本名称为$0"

echo "总共有$#个参数,分别是$*。"

echo "第1个参数为$1,第5个为$5。"

[root@localhost ~]# bash example.sh one two three four five six

当前脚本名称为example.sh

总共有6个参数,分别是one two three four five six。

第1个参数为one,第5个为five。

判断用户的参数

按照测试对象来划分,条件测试语句可以分为4种:

文件测试语句;

逻辑测试语句;

整数值比较语句;

字符串比较语句。

image

文件测试即使用指定条件来判断文件是否存在或权限是否满足等情况的运算符

 文件测试所用参数

操作符作用
-d测试文件是否为目录类型
-e测试文件是否存在
-f判断是否为一般文件
-r测试当前用户是否有权限读取
-w测试当前用户是否有权限写入
-x测试当前用户是否有权限执行

使用文件测试语句来判断/etc/fstab是否为一个目录类型的文件,然后通过Shell解释器的内设$?变量显示上一条命令执行后的返回值。如果返回值为0,则目录存在;如果返回值为非零的值,则意味着它不是目录,这个目录不存在:

[root@localhost ~]# [ -d /etc/fstab ]

[root@localhost ~]# echo $?

1

再使用文件测试语句来判断/etc/fstab是否为一般文件,如果返回值为0,则代表文件存在,且为一般文件:

[root@localhost ~]# [ -f /etc/fstab ]

[root@localhost ~]# echo $?

0

Shell终端中逻辑“与”的运算符号是&&,它表示当前面的命令执行成功后才会执行它后面的命令,因此可以用来判断/dev文件是否存在,若存在则输出Exist字样

[root@localhost ~]# [ -e /dev ] && echo "Exist"

Exist

Linux系统中的运算符号为||,表示当前面的命令执行失败后才会执行它后面的命令,因此可以用来结合系统环境变量USER来判断当前登录的用户是否为非管理员身份:

[root@localhost ~]# [ $USER = root ] || echo "user"

[root@localhost ~]# su - centos8

Last login: Wed Nov 15 10:38:34 CST 2023 on tty2

[centos8@localhost ~]$ [ $USER = root ] || echo "user"

user

Linux系统中的运算符号是一个叹号(!),它表示把条件测试中的判断结果取相反值,判断当前用户是否为一个非管理员的用户。由于判断结果因为两次否定而变成正确,因此会正常地输出预设信息:

[root@localhost ~]# [ ! $USER = root ] || echo "administrator"

administrator

&&是逻辑“与”,只有当前面的语句执行成功的时候才会执行后面的语句。

||是逻辑“或”,只有当前面的语句执行失败的时候才会执行后面的语句。

!是逻辑“非”,代表对逻辑测试结果取反值;之前若为正确则变成错误,若为错误则变成正确。

先判断当前登录用户的USER变量名称是否等于root,然后用逻辑“非”运算符进行取反操作,效果就变成了判断当前登录的用户是否为非管理员用户。最后若条件成立,则会根据逻辑“与”运算符输出user字样;若条件不满足,则会通过逻辑“或”运算符输出root字样,而只有在前面的&&不成立时才会执行后面的||符号。

[root@localhost ~]# [ ! $USER = root ] && echo "user" || echo "root"

root

使用规范的整数比较运算符来进行操作。

可用的整数比较运算符

操作符作用
-eq是否等于
-ne是否不等于
-gt是否大于
-lt是否小于
-le是否等于或小于
-ge是否大于或等于

使用free -m命令查看内存使用量情况(单位为MB),然后通过“grep Mem:”命令过滤出剩余内存量的行,再用awk '{print $4}'命令只保留第4列。

[root@localhost ~]# free -m | grep Mem:

Mem:           1790        1139          87          33         563         465

[root@localhost ~]# free -m | grep Mem: | awk '{print $4}'

86

输出结果赋值给一个变量,以方便其他命令进行调用:

[root@localhost ~]# freemem=`free -m | grep Mem: | awk '{print $4}'` && echo $freemem

86

使用整数运算符来判断内存可用量的值是否小于1024,若小于则会提示“Insufficient Memory”(内存不足)的字样:

[root@localhost ~]# [ $freemem -lt 1024 ] && echo "Insufficient Memory"

Insufficient Memory

字符串比较语句用于判断测试字符串是否为空值,或两个字符串是否相同。

常见字符串比较运算符

操作符作用
=比较字符串内容是否相同
!=比较字符串内容是否不同
-z判断字符串内容是否为空

通过判断String变量是否为空值,进而判断是否定义了这个变量:

[root@localhost ~]# [ -z $String ] && echo $?

0

当前语系的环境变量值LANG不是英语(en.US)时,则会满足逻辑测试条件并输出“Not en.US”(非英语)的字样:

[root@localhost ~]# [ ! $LANG = "en.US" ] && echo "Not en.US"

Not en.US

  • 10
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Linux系统的Shell检查脚本是一种用于检查和测试Shell脚本的工具。它可以帮助开发人员和系统管理员发现脚本中的错误和问题,以确保脚本的正确性和可靠性。Shell检查脚本可以检查脚本中的语法错误、变量使用、函数定义、文件操作等方面的问题,并提供详细的错误信息和建议。使用Shell检查脚本可以提高脚本的质量和可维护性,减少错误和故障的发生。 ### 回答2: Linux系统中有一种特殊的脚本称为shell脚本,它可以用来进行一些自动化的检查和处理操作。通过shell脚本,我们可以灵活地进行各种检查任务,节约时间和人力成本。 首先,在创建shell脚本之前,我们需要确定要进行的具体检查任务。可以是检查系统的硬件配置、软件版本、服务状态、文件和目录权限等。然后,我们可以利用shell脚本语言来编写具体的检查脚本。 在Shell脚本中,我们可以使用各种命令和工具来完成检查任务。例如,可以使用grep命令来搜索特定的关键词,使用awk命令来解析文本数据,使用find命令来查找文件和目录等。通过这些命令和工具的组合和使用,我们可以灵活地进行各种检查操作。 此外,我们还可以使用条件语句和循环语句来实现更复杂的检查逻辑。例如,我们可以使用if语句来判断某个条件是否满足,根据不同的情况执行不同的命令。我们还可以使用for循环来遍历某个范围内的数据,执行相同的检查任务。 最后,在运行shell检查脚本之前,我们需要给予执行权限。可以使用chmod命令来修改脚本文件的权限,使其可以执行。然后,我们可以使用./命令来运行脚本。 总之,Linux系统中的shell脚本可以用于进行各种检查任务,通过灵活使用各种命令和工具,结合条件语句和循环语句,可以实现复杂的检查逻辑。这样,我们可以方便地进行系统检查,提高效率和准确性。 ### 回答3: Linux系统中的shell检查脚本是一段用于自动化执行任务和检查系统状态的代码。它可以通过命令行或者定时任务的方式运行,以达到自动监控和报告系统运行情况的目的。 shell检查脚本可以包含各种命令和逻辑判断,用于检查系统的各种指标和状态。比如,可以通过检查磁盘空间占用率、进程运行状态、网络连接情况等来监控系统的健康度。当某个指标或状态达到预设的阈值时,脚本可以发出警报、记录日志或者采取其他预定的操作,以提醒系统管理员或采取相应的处理措施。 shell检查脚本的编写需要掌握相应的shell脚本语法和命令。可以使用if语句、for循环、while循环等控制结构来实现各种判断和循环操作。同时,还可以使用一些命令行工具如grep、awk、sed等来处理和过滤命令的输出。 一个好的shell检查脚本应该具备以下特点:简洁明了的逻辑结构、充分的错误处理机制、适当的日志输出和报警机制、良好的可读性和可维护性等。此外,还可以使用一些第三方工具或库来增强脚本的功能和易用性,如nagios、zabbix等监控系统。 总之,shell检查脚本Linux系统中具有重要的作用,通过自动化的方式检查系统状态和运行情况,可以提高系统的可靠性和可维护性,减少系统管理员的工作压力,并及时发现和解决系统问题,保障系统的稳定运行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

库库的里昂

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

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

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

打赏作者

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

抵扣说明:

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

余额充值