linux学习(十)Shell中的控制语句
@
1. 条件测试语句
测试语句十Shell的特有功能,Shell提供了一组测试运算符,通过这些运算符,Shell程序能够判断某个或者某几个条件是否成立。
在Shell中用户可以使用测试语句来测试指定条件表达式的条件的真和假。当指定条件为真,条件测试的返回值为0;反之,条件测试的返回值为非0值。条件测试的语法有两种,分别是test命令和[]命令
1.1 test语句
test expression
其中,参数expression表示需要进行测试的语句,整个test语句为真,test返回0,若为假,则返回非0
笔者强烈推荐test语句,[]语句十分糟糕,要求十分严格,会出现各式各样的错误,不利于初学者学习
1.2[]语句
[expression]
其中,参数expression的语句与test命令中语法完全相同。条件表达式和左右方括号之间都必须有一个空格
1.3文件测试
文件测试指的是根据给出的路径,判断当前路径下的文件属性及类型。
test op file
[ op file ]
| 环境变量 | 说明 |
|---|---|
| -a | 若文件存在,则条件测试返回结果为0 |
| -b | 若文件存在,且为块文件,则条件测试返回结果为0 |
| -c | 若文件存在,且为字符文件,则条件测试返回结果为0 |
| -d | 若文件存在,且为目录文件,则条件测试返回结果为0 |
| -e | 若文件,则条件测试返回为0 |
| -f | 若文件存在,且为常规文件,则条件测试返回结果为0 |
| -r | 若文件存在且可读,则条件测试返回结果为0 |
| -w | 若文件存在且可写,则条件测试返回结果为0 |
| -x | 若文件存在且可执行,则条件测试返回结果为0 |
| -p | 若文件存在且是FIFO文件,则条件测试返回结果为0 |
| -s | 若文件存在且不是空文件,则条件测试返回结果为0 |
1.4字符串测试
test 操作符
| 操作符 | 说明 |
|---|---|
| str | 判断指定字符串是否为空 |
| str1==str2 | 若字符串相等就为0 |
| -n str | 判断字符串是否为非空串,若为空串则测试结果为0 |
| -z str | 若为空串,则测试结果为0 |
1.5数值测试
与字符串类似,数值测试也有两种形式的语法
test number1 op number2
或者
[ number1 op number2 ]
| 操作符 | 说明 |
|---|---|
| n1 -eq n2 | 比较n1是否等于n2,如果等于,则测试结果为0 |
| n1 -ne n2 | 若n1不等于n2,则测试结果为0 |
| n1 -lt n2 | 比较n1是否小于n2,n1如果小于n2,测试结果为0 |
| n1 -le n2 | 比较n1是否小于等于n2,n1如果小于等于n2,测试结果为0 |
| n1 -gt n2 | 比较n1是否大于n2,n1如果大于n2,测试结果为0 |
| n1 -ge n2 | 比较n1是否大于等于n2,n1如果大于等于n2,测试结果为0 |
1.5逻辑操作符
逻辑操作符相当于c语言中的&&、||、!
| 操作符 | 说明 |
|---|---|
| !exp | 逻辑非,条件表达式为假,则该操作符的运算结果为真 |
| exp1 -a exp2 | 逻辑与,条件exp1和exp2的值都为真时,整个表达式为真 |
| exp1 -o exp2 | 逻辑或,条件表达式exp1和exp2的值有一个为真,整个表达式为真 |
| (exp) | 圆括号,将表达式分组,优先得到结果 |
linux学习(十)Shell中的控制语句的更多相关文章
- linux 学习10 shell 基础
10.1 Shell概述 .Shell是什么 Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编写一 ...
- (原创)鸟哥linux学习script shell相关笔记
在使用鸟哥linux进行script shell学习的过程中碰到一些不太明白的知识点,在这里进行一些记录 1. [root@www scripts]# vi sh03.sh #!/bin/bash # ...
- Linux 学习 (八) Shell
Linux达人养成计划 I 学习笔记 Shell 是什么: Shell 是一个命令解释器 Shell 还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强 Shell 的分类: Bourne S ...
- linux 学习随笔-shell基础知识
1:用户的shell历史命令保存在home/username/.bash_history中 #!! 执行用户的上一条命令 #!pw 执行命令历史中最近一次以pw开头的命令 2:'*'来匹配零或多个 ...
- Linux学习之Shell编程基础
转自:http://my.oschina.net/itblog/blog/204410 1 语法基本介绍1.1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来 ...
- linux学习总结----shell编程
## 环境变量 ## 全局变量 ``` 常见的全局环境变量 PATH 指令的搜索路径 HOME 用户的家目录 LOGNAME 登录名 SHELL 脚本的类型 使用全局环境变量 echo $PATH 自 ...
- (六)linux 学习 -- 从 shell 眼中看世界
The Linux Command Line 读书笔记 - 部分内容来自 http://billie66.github.io/TLCL/book/chap08.html 文章目录 字符展开 `*` 路 ...
- linux 学习随笔-shell简单编写
脚本最好都放在/usr/local/sbin中 脚本的执行 sh -x 脚本.sh -x可以查看执行过程 1在脚本中使用变量 使用变量的时候,需要使用$符号: #!/bin/bash ##把命令赋 ...
- Linux学习笔记 - Shell 控制语句
if 语句 语法: #!/bin/bash a= b= if [ $a -eq $b ] then echo "a 等于 b" elif [ $a -gt $b ] then ec ...
随机推荐
- idea2019注册码,亲测可用!
2019已经过半了,最近可把我忙死了,好久没打理这里的留言了. 今天登上来,看到许多同学反馈按照之前的那篇文章 IntelliJ IDEA 2018激活码 永久破解 里的步骤无法破解idea,其实用这 ...
- R语言学习-基础篇1
###第一周:R基础 rm(list = ls()) #ctr+L###矩阵相乘,函数diag()a=matrix(1:12,nrow=3,ncol=4)b=matrix(1:12,nrow=4,n ...
- 如何在windows下安装linux双系统
首先是看这篇博客,讲得很详细,但是有一点小小的区别,这里把整个过程回顾一下. https://www.cnblogs.com/masbay/p/10745170.html 第一步,刻盘,将一个u盘刻录 ...
- 微信 电脑版 HOOK(WeChat PC Hook)- 远程线程注入dll原理
Windows加载dll的特性 1.Windows系统中,每个exe软件运行的时候,会加载系统模块kernel32.dll 2.所有加载进exe软件的系统模块kernel32.dll,内存地址都是一样 ...
- EF Core 中处理 1对1 关系
最近在开发记录感想功能的时候用到了1对1的数据关系,具体情况是这样的,有这样两个1对1的类型 public class Item { public int Id { get; set; } publi ...
- Linux selinux 规则导致audit拒绝
Linux selinux 规则导致audit拒绝 转载注明来源: 本文链接 来自osnosn的博客,写于 2019-09-26. 查看 audit2why -d audit2allow 这两个命令. ...
- AI行业精选日报_人工智能(12·18)
百度Apollo升级自动驾驶平台,发布车路协同.智能车联两大平台 12 月 18 日消息,Apollo 发布了全球首个点到点城市自动驾驶开放能力.自动驾驶云.新一代智能交通解决方案.小度车载 2020 ...
- 【zabbix部署】基于linux安装zabbix监控服务和被监控服务
环境配置 zabbix_server:10.0.0.1 zabbix_agentd:10.0.0.1,10.0.0.2(暂定) 操作系统:centos7.6 安装环境配置 1. LNMP环境 zabb ...
- 精通awk系列(6):awk命令结构和awk语法结构
回到: Linux系列文章 Shell系列文章 Awk系列文章 awk命令行结构和语法结构 awk命令行结构 awk [ -- ] program-text file ... (1) awk -f p ...
- 一、VUE项目BaseCms系列文章:项目介绍与环境配置
一.项目效果图预览: 二.项目介绍 基于 elementui 写一个自己的管理后台.这个系列文章的目的就是记录自己搭建整个管理后台的过程,希望能帮助到那些入门 vue + elementui 开发的小 ...