linux bash编程之算数运算和测试类型(第二篇)
写在最前边:在bash中数据类型有两种,分别是数值型和字符型。其中字符型是默认的。
1、算数运算
· 运算符
· 语法
1.1、运算符:+、-、*、/、%、**
注意:有些时候 *(乘号)需要转义
1.2、语法:有以下几种方式
VAR为变量名,expression为算数表达式
let VAR=expression
VAR=$[expression]
VAR=$((expression))
VAR=$(expr argu1 argu2 argu3)
语法示例
2、增强型赋值运算:在自身基础上做赋值运算
· 运算符
· 语法
2.1运算符:+=、-=、*=、/=、%=,++,--
2.2语法:
let i=$i+n ——>let i+=n
自增:let i=i+1 ——> let i++
自减:let i=i-1 ——>let i--
自增示例:
3、条件测试:编写测试机制来判断条件是否满足
· 利用命令的返回值来判断
· 测试表达式判断
· 组合测试条件
3.1、利用命令的返回值来判断:执行一条命令他的运行结果可以使用echo $?查看
0:成功
1-255:失败
3.2、测试表达式判断
· 语法
· 测试类型
3.2.1、语法:
test expression :test为关键字
[ expression ]:expression两边必须有空格
[[ expression ]]:expression两边必须有空格
3.2.2、测试类型:数值测试、字符串测试、文件测试
数值测试:数值比较
-eq:是否等于(equal)
-ne:是否不等于(not equal)
-gt:是否大于(greater than)
-ge:是否大于等于(greater equal)
-lt:是否小于(little than)
-le:是否小于等于(little equal)
数值测试示例
字符串测试:字符串要用引号引起来,最好使用[[ expression ]]
==:是否等于
!=:是否不等于
>:是否大于
<:是否小于
=~:左侧字符串是否能被右侧的pattern所匹配
-z:判断指定字符串是否为空。空为真,不空为假
-n:判断指定字符串是否不空。不空为真,空为假
字符串测试示例:
由一下三个命令可以看出只有[[ "a" > "b" ]]返回值是正确的所有字符串要引起来切使用[[ expression ]]
-z和-n使用示例
文件测试:
存在性测试:存在为真不存在为假
-a FILE
-e FILE
文件类型测试
-b FILE:文件是否存在,且文件类型为块设备文件
-c FILE:文件是否存在,且文件类型为字符设备文件
-d FILE:文件是否存在,且为目录文件
-f FILE:文件是否存在,且为普通文件
-h 或-L FILE:文件是否存在,且为符号链接文件
-p FILE:文件是否存在,且为命名管道文件
-S FILE:文件是否存在,且为套接字文件
文件权限测试
-r FILE:文件是否存在,且对当前用户可读
-w FILE:文件是否存在,且对当前用户可写
-x FILE:文件是否存在,且对当前用户可执行
特殊权限测试:
-u FILE :文件是否存在,且拥有suid权限。
-g FILE:文件是否存在,且拥有guid权限。
-k FILE:文件是否存在,且拥有sticky权限。
文件是否有内容
-s FILE :是否不空。
时间戳:
-N FILE:文件自上一次读操作后是否被修改过。
从属关系测试:
-O:当前文件是否为文件的属主。
-G:当前用户是否属于文件的数组。
双目运算:文件新旧测试
FILE1 -ef FILE2:两个文件是否只想同一个文件系统的相同inode的硬链接
FILE1 -nt FILE2:文件1是否比文件2新
FILE1 -ot FILE2:文件1是否比文件2旧
3.3、组合测试条件:
逻辑运算:有两种方式
第一种
COMMAND1 && COMMAND2
COMMAND1 || COMMAND2
!COMMAND
第二种
EXPRESSION1 -a EXPRESSION2
EXPRESSION1 -o EXPRESSION2
!EXPRESSION
组合测试练习:将当前主机名保存在nameHost中,若主机名为空或者主机名为localhost.localdomain,则修改主机名为master
shell编程其他文章请点击下边链接
linux bash编程之算数运算和测试类型(第二篇)的更多相关文章
- Linux Bash编程
在Linux系统介绍中,介绍了shell的多个版本,现在的Linux发行版基本都默认使用bash(Bourne Again shell),兼容Bourne shell (sh),本文将简要介绍Bash ...
- Linux - Shell - 算术表达式 - 算数运算
概述 shell 中基于 $(()) 的 算数运算 背景 复习 shell 脚本 凑数吧 准备 环境 os centos7 1. 算数运算 代码 #!/bin/bash # $(()) 的数学运算, ...
- Linux Shell编程(5):整数运算
http://blog.sina.com.cn/s/blog_6db275da0101asmf.html #!/bin/sh let a=$1+$2 b=$[$1+$2] ((c=$1+$2)) d= ...
- linux shell编程(二) 条件测试
bash中常用的条件测试有三种 条件测试的表达式:[ expression ] [[ expression]] 第一种:整数测试: -eq 测试两个整数是否相等,比如[ $A -eq $B ] -n ...
- linux bash编程之函数和循环控制
函数:实现独立功能的代码段 函数只有在调用时才会执行 语法一: function F_NAME{ 函数体 } 语法二: F_NAME() { 函数体 } 函数的返回值: 默认函数返回值:函数执行状态返 ...
- Linux Shell编程(9)——特殊变量类型
局部变量局部变量只在代码块或一个函数里有效 (参考函数里的局部变量)环境变量这种变量会影响Shell的行为和用户接口 在大多数情况下,每个进程都会有一个"环境表", 它由一组由进程 ...
- Linux网络编程:基于UDP的程序开发回顾篇
基于无连接的UDP程序设计 同样,在开发基于UDP的应用程序时,其主要流程如下: 对于面向无连接的UDP应用程序在开发过程中服务端和客户端的操作流程基本差不多.对比面向连接的TCP程序,服务端少了 ...
- Linux网络编程:基于TCP的程序开发回顾篇《转》
面向连接的TCP程序设计 基于TCP的程序开发分为服务器端和客户端两部分,常见的核心步骤和流程: 其实按照上面这个流程调用系统API确实可以完全实现应用层程序的开发,一点问题没有.可随着时间的推移,你 ...
- 【Linux 网络编程】常用套接字类型
常用套接字类型<1>流式套接字(SOCK_STREAM)---TCP 提供面向连接的.可靠的传输服务,数据无差错,无重复的发送, 且按发送顺序接收.<2>数 ...
随机推荐
- TwoHandleSlider/RangeSlider
项目需求:双滑块slider,可以实现选择一个范围 (一)添加两个slider,并把背景以及fill设置为透明,并去除RaycastTarget (二)在背景下添加个一个image,背景图为滑块划过后 ...
- Android dos操作
adb shell 开Androidls 列表cd +目录名 打开目 ...
- MybatisPlus3.X使用配置
本文讲解了MyBatis-Plus在使用过程中的配置选项,其中,部分配置继承自MyBatis原生所支持的配置 基本配置 本部分配置包含了大部分用户的常用配置,其中一部分为 MyBatis 原生所支持的 ...
- Nginx、WSGI、 uWSGI、 uwsgi的区别
当我们部署完一个应用程序,浏览网页时具体的过程是怎样的呢?首先我们得有一个 Web 服务器来处理 HTTP 协议的内容,Web 服务器获得客户端的请求,交给应用程序,应用程序处理完,返回给 Web 服 ...
- FPGA时序约束理解记录
最近整理了一下时序约束的内容,顺便发出来分享记录一下. 任何硬件想要工作正常,均需满足建立和保持时间,至于这个概念不再陈述. 下面将重点介绍两个概念:建立余量和保持余量.FPGA内部进行时序分析无非就 ...
- Phpstudy隐藏后门
Phpstudy隐藏后门 1.事件背景 Phpstudy软件是国内的一款免费的PHP调试环境的程序集成包,通过集成Apache.PHP.MySQL.phpMyAdmin.ZendOptimizer多款 ...
- 利用Python迭代器查找最小值和最大值
迭代器的用法为for...in.... 迭代器如同for循环,可以遍历所有的值,但我们熟悉的的语言,都是通过下标完成的,python的循环程度要高于C语言的循环,因为python的迭代不止可以用在Li ...
- LNMP下zabbix_server安装部署二
上一篇中搭建完成了zabbix的web端,但是虚拟机有点问题,所以转到笔记本上来写笔记本环境 server:192.168.112.9 agent:192.168.112.8 上一篇中完成了web ...
- [考试反思]0819NOIP模拟测试26:荒芜
这么正式的考试,明天应该就是最后一次了吧 然而..今天,我仍然没能抓住机会 RNBrank1:.skyh还是稳.外校gmk拿走第三. 四五六名都是63-64.第七50.第八39.我和三个并列的是第九. ...
- 单(single):换根dp,表达式分析,高斯消元
虽说这题看大家都改得好快啊,但是为什么我感觉这题挺难.(我好菜啊) 所以不管怎么说那群切掉这题的大佬是不会看这篇博客的所以我要开始自嗨了. 这题,明显是树dp啊.只不过出题人想看你发疯,询问二合一了而 ...