shell脚本编程之运算

一、数学运算

1、expr命令

此命令可以在命令行执行数学运算操作。

由于此命令使用时过于麻烦,所以不推荐使用。

2、方括号和双圆括号

$[ EXPRESSION ]

$(( EXPRESSION ))

在之前的实例中已经出现过方括号的表达式:$[$a+$b]。

3、let命令

4、算术运算符

x+=y:相当于x=x+y

x-=y:相当于x=x-y

x*=y:相当于x=x*y

x/=y:相当于x=x/y

x++: 相当于x=x+1

x--: 相当于x=x-1

二、字符串连接

变量引用后方直接跟字串时,变量名要加{}。

三、条件测试

条件测试的表达式可以使用以下三种格式:

[ expression ]:注意中括号与表达式之间有空格;

[[ expression ]]:注意中括号与表达之间有空格;

test expression:上面的两种格式其实都是test命令的其它格式。

test命令可以进行3种类型的条件判断:整数测试、字符串测试、文件测试。

1、整数测试

-eq:测试两个整数是否相等;

-ne:测试两个整数是否不等,不等为真,相等为假;

-gt:测试一个数是否大于一个数,大于为真,否则为假;

-lt:测试一个数是否小于一个数,小于为真,否则为假;

-ge:测试一个数是否大于一个数,大于等于为真,否则为假;

-le:测试一个数是否大于一个数,小于等于为真,否则为假;

实例:如果两个参数相等则显示"equal",否则显示"different"。

2、字符测试

==:测试是否相等,等为真,不等为假;

!=:测试是否不等,不等为真,等为假;

=~:模式配置;

-z string:测试指定字符串是否为空,空为真不空为假

-n string:测试指定字符串是否为空,空则假不空为真

-s string:测试指定字符串是否不空,不空为真,空则为假

实例:

上面是一个使用"-z"的例子,如果改为-n的话则如下图所示:

注:变量比较时最好加上引号(单双都可以),否则如果变量为空的话,会报错。

3、文件测试

-a FILE:测试FILE存在为真,否则为假;

-e FILE:测试FILE是否存在,存在为真,否则为假;

-l/-L FILE:软链接文件;

-b:块设备;

-c:字符设备;

-S:套接字文件;

-p:命名管道;

-s:非空文件为真;

-f FILE:测试FILE是否为普通文件;

-d FILE:测试指定路径是否为目录;

-r FILE:测试文件对当前用户是否可读;

-w FILE:测试文件对当前用户是否可写;

-x FILE:测试文件对当前用户是否可执行;

-N FILE:修改文件时间比访问时间新则为真;

内容重定向到文件中,但文件还没有被打开过的情况

file1 -nt file2:file1比file2新则为真;

file1 -ot file2:file1比file2旧则为真。

实例:如果/test存在则将其重命名为/new-test,否则创建这个目录:

实例:给定一个参数,首先判断此参数是否存在,如果存在判断是否为文件,若为文件确保其有执行权限:

验证:

4、组合测试条件

在多个条件间实现逻辑运算

-a:与关系 [ condition1 -a condition2 ]

-o:或关系 [ condition1 -o condition2 ]

!:非关系  [ ! condition ] 或 [ -not condition ]

四、命令间的逻辑关系

&&:逻辑与,只有当左边的条件为真时才会执行右边的语句;

||:逻辑或,当左边的条件为假时才会执行右边的语句。

上面的实例也可以使用逻辑与来完成:

时间: 2024-08-08 13:56:04

shell脚本编程之运算的相关文章

shell脚本编程之算数运算

#/bin/bash 在进行shell脚本编程之前一定要在脚本的开头加上上头这一句话,并且要顶着头写,前头不能有空格和空行.这句话的意思是告诉系统用哪一种shell来执行此脚本.如果没有这句话就有可能发生一些意想不到的错误. 接下来说一说在shell脚本中或命令行中如何进行算数运算.也许你已经发现,因为shell中的变量的格式都为字符类型,所以如果只是简单的让一个变量去等于一个表达式的话,那么当输出此变量的时候输出的还是哪个表达式,而并不是表达式所得出来的结果,比如:  ~]$ a=1+2  ~

Shell脚本编程概述(一):算数运算和条件测试

一.shell脚本语言 1.编程语言的分类: (1)根据运行方式 编译运行:源代码 --> 编译器 (编译)--> 程序文件: 解释运行:源代码 --> 运行时启动解释器,由解释器边解释边运行: (2)根据其编程过程中功能的实现是调用库还是调用外部的程序文件: shell脚本编程:利用系统上的命令及编程组件进行编程: 完整编程:利用库或编程组件进行编程: (3)编程模型: 过程式编程语言:以指令为中心来组织代码,数据是服务于代码: 顺序执行.选择执行.循环执行:代表:C,bash 面向对

Shell脚本编程知识点总结及范例

 一:关于语言 1)编译性语言 编译型语言多半运作于底层,所处理的是字节.整数.浮点数或其它及其机器层经的对象.处理过程为:源程序--预处理--编译--汇编--链接,编译性语言为静态语言. 2)解释性语言 解释性语言读入程序代码并将其转化为内部的形式加以执行.处理过程:解释性(文本文件)-解释器去读取并执行.解释性语言为动态语言. 二:基础 变量类型 linux脚本中的变量不需要事先声明,而是直接定义使用(这点不同于其他高级编程语言中变量的使用)bash变量类型分为本地变量和环境变量. 本地变量

shell脚本编程——流程控制

shell脚本编程--流程控制 目   录 一. if 二. case 三. for 四. while 五. until 六. 综合应用 一.if 1.语法 (1)单分支 if  判断条件:then fi (2)双分支 if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 fi (3)多分支 if 判断条件1; then 条件为真的分支代码 elif 判断条件2; then 条件为真的分支代码 elif 判断条件3; then 条件为真的分支代码 else 以上条件都为假

Linux中的shell脚本编程——函数

概述: 本章节将总结while,for循环语句的特殊用法,在不同的场景当中,更能发挥其功能和价值.除此之外,还会介绍一种特殊的循环语句select语句,实现菜单的作用.最重要的是讲解shell脚本编程中函数的用法.这些内容都要熟练掌握. 一.循环语句的特殊用法: 1.while循环的特殊用法(遍历文件的每一行): □语法:while read line; do 循环体 done < /PATH/FROM/SOMEFILE □意义:依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将

Linux 的shell脚本编程

shell脚本编程 程序:指令+数据 程序编辑风格:             过程式:以指令为中心,数据服务于指令             对象式:以数据为中心,指令服务于数据 shell程序:提供了编程能力,解释执行 计算机:运行二进制指令 编程语言: 低级:汇编语言 高级:编译:高级语言-->编译器-->目标代码 java,c#,c,c++ 解释:高级语言-->解释器-->机器代码 shell,per,python 编程逻辑处理方式:           顺序执行      

Linux shell脚本编程基础之练习篇

shell脚本编程基础之练习篇. 1.编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息. #!/bin/bash if [ $# -ne 1 ] then echo "请输入一个参数" exit else echo "参数正确" newfile=$1 fi #echo `grep "^#\!" ${newfile}` if ! grep "^#\!" ${newfile} &>/

Shell脚本编程基础

什么是Shell 操作系统最外层的程序,shell通过提示符让用户输入,向操作系统解释该输入,然后处理来自操作系统的任何结果输出来,管理用户与操作系统之间的交互. Shell是一个用户跟操作系统之间的一个命令解释器.Shell是用户与Linux操作系统之间沟通的桥梁.用户可以输入命令执行,又可以利用 Shell脚本编程去运行. 为什么要用到shell shell是一个交互式程序,当用户输入一条命令,shell就解释一条,一次只处理一条命令.如果我们一些复杂操作,逐个敲命令工作量就会增大,因此,我

8.11_Linux之bash shell脚本编程入门篇(一)

什么是bash shell脚本编程? 答:Linux里面有多种shell,而CentOS和redhat的默认shell是bash shell.至于shell脚本,这个跟windows操作系统里面的批处理文件有点像(.bat的文件).不知道大家还是否记得Linux的哲学思想吗?其中有那么两点点:由众多目的的单一应用程序组成:一个程序只做一件事,且做好:组合目的的单一的小程序完成复杂的任务.我觉得shell脚本编程就很好的体现了这个哲学思想.shell脚本利用shell的功能缩写的一个"程序&quo