0
点赞
收藏
分享

微信扫一扫

Linux学习-DAY7

2.2接收用户参数

Linux系统中的Shell脚本语言内设了用于接收参数的变量,变量之间使用空格间隔。例如,$0对应的是当前Shell脚本程序的名称,$#对应的是总共有几个参数,$*对应的是所有位置的参数值,$?对应的是显示上一次命令的执行返回值,而$1、$2、$3……则分别对应着第N个位置的参数值

Linux学习-DAY7_取值

2.3判断用户参数

系统在执行mkdir命令时会判断用户输入的信息,即判断用户指定的文件夹名称是否已经存在,如果存在则提示报错;反之则自动创建。Shell脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返回数字0,否则便返回非零值。

Linux学习-DAY7_字符串_02

条件测试语句分4种:文件测试语句、逻辑测试语句、整数值比较语句、字符串比较语句。

 文件测试所用的参数

操作符

作用

-d

测试文件是否为目录类型

-e

测试文件是否存在

-f

判断是否为一般文件

-r

测试当前用户是否有权限读取

-w

测试当前用户是否有权限写入

-x

测试当前用户是否有权限执行

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

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

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

整数比较运算符仅是对数字的操作,不能将数字与字符串、文件等内容一起操作,而且不能想当然地使用日常生活中的等号、大于号、小于号等来判断。因为等号与赋值命令符冲突,大于号和小于号分别与输出重定向命令符和输入重定向命令符冲突。因此一定要使用规范的整数比较运算符来进行操作。

 可用的整数比较运算符

操作符

作用

-eq

是否等于

-ne

是否不等于

-gt

是否大于

-lt

是否小于

-le

是否等于或小于

-ge

是否大于或等于

字符串比较语句用于判断测试字符串是否为空值,或两个字符串是否相同。它经常用来判断某个变量是否未被定义(即内容为空值),理解起来也比较简单。

 常见的字符串比较运算符

操作符

作用

=

比较字符串内容是否相同

!=

比较字符串内容是否不同

-z

判断字符串内容是否为空

3.流程控制语句

3.1 if条件测试语句

if条件语句的单分支结构由if、then、fi关键词组成,而且只在条件成立后才执行预设的命令,相当于口语的“如果……那么……”。

Linux学习-DAY7_字符串_03

f条件语句的双分支结构由if、then、else、fi关键词组成,它进行一次条件匹配判断,如果与条件匹配,则去执行相应的预设命令;反之则去执行不匹配时的预设命令,相当于口语的“如果……那么……或者……那么……”。

Linux学习-DAY7_字符串_04

if条件语句的多分支结构由if、then、else、elif、fi关键词组成,它进行多次条件匹配判断,这多次判断中的任何一项在匹配成功后都会执行相应的预设命令,相当于口语的“如果……那么……如果……那么……”。

Linux学习-DAY7_取值_05

3.2 for条件循环语句

for循环语句允许脚本一次性读取多个信息,然后逐一对信息进行操作处理。当要处理的数据有范围时,使用for循环语句就再适合不过了。

Linux学习-DAY7_字符串_06

3.3 while条件循环语句

hile条件循环语句是一种让脚本根据某些条件来重复执行命令的语句,它的循环结构往往在执行前并不确定最终执行的次数,完全不同于for循环语句中有目标、有范围的使用场景。while循环语句通过判断条件测试的真假来决定是否继续执行命令,若条件为真就继续执行,为假就结束循环。

Linux学习-DAY7_取值_07

3.4 case条件测试语句

case语句是在多个范围内匹配数据,若匹配成功则执行相关命令并结束整个条件测试;如果数据不在所列出的范围内,则会去执行星号(*)中所定义的默认命令。

Linux学习-DAY7_取值_08

3.5计划任务服务程序

计划任务分为一次性计划任务与长期计划任务。

一次性计划任务只执行一次,一般用于临时的工作需求。可以用at命令实现这种功能,只需要写成“at时间”的形式就行。如果想要查看已设置好但还未执行的一次性计划任务,可以使用at -l命令;要想将其删除,可以使用“atrm任务序号”。at命令的参数及其作用


参数

作用

-f

指定包含命令的任务文件

-q

指定新任务名称

-l

显示待执行任务列表

-d

删除指定待执行任务

-m

任务执行后给用户发邮件

还有些时候,我们希望Linux系统能够周期性地、有规律地执行某些具体的任务,那么Linux系统中默认启用的crond服务简直再适合不过了。创建、编辑计划任务的命令为crontab -e,查看当前计划任务的命令为crontab -l,删除某条计划任务的命令为crontab -r。另外,如果您是以管理员的身份登录的系统,还可以在crontab命令中加上-u参数来编辑他人的计划任务。

 crontab命令的参数及其作用

参数

作用

-e

编辑计划任务

-u

指定用户名称

-l

列出任务列表

-r

删除计划任务

crond服务设置任务的参数格式

Linux学习-DAY7_取值_09

字段

说明

分钟

取值为0~59的整数

小时

取值为0~23的任意整数

日期

取值为1~31的任意整数

月份

取值为1~12的任意整数

星期

取值为0~7的任意整数,其中0与7均为星期日

命令

要执行的命令或程序脚本

假设在每周一、三、五的凌晨3:25,都需要使用tar命令把某个网站的数据目录进行打包处理,使其作为一个备份文件。我们可以使用crontab -e命令来创建计划任务,为自己创建计划任务时无须使用-u参数。crontab –e命令的具体实现效果和crontab -l命令的结果如下所示:

[root@linuxprobe ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@linuxprobe ~]# crontab -l
25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot

如果在crond服务中需要同时包含多条计划任务的命令语句,应每行仅写一条。

在crond服务的配置参数中,一般会像Shell脚本那样以#号开头写上注释信息,这样在日后回顾这段命令代码时可以快速了解其功能、需求以及编写人员等重要信息。

计划任务中的“分”字段必须有数值,绝对不能为空或是*号,而“日”和“星期”字段不能同时使用,否则就会发生冲突。


举报

相关推荐

0 条评论