shell编程 --- 一些简单的运算符
每天进步一点点,从量变到质量。
今天讲讲shell编程中的运算符。学过例如c,java等语言的人可能都知道运算符是啥个东东,也知道如何使用各种运算符。不过,shell的运算符和其他大部分编程语言还是有那么一点点差别的。不信你往下看。
先说说讲的大体内容
算术运算符
关系运算符
有关字符串的运算符
算术运算符
估计可能还有些人不清除啥是算术运算符、啥是关系运算符。说白了算术运算符就是最基本的那些运算符,即加减乘除、取余、赋值(=)等这些基本的、最常用的运算符。
对于shell中数与数之间的运算还是和其他语言有那么一点区别。例如要你算a=5+10。可能在别的语言中,你直接
a=5+10
就可以了。但是很抱歉,在shell中行不通。如果你这样写,在shell中a的值不是15,a的值就是”5+10”这个字符串。
所以我们需要借助其他命令来实现,如awk和expr这些命令。其中expr算是用的比较多,因此,我们也用expr这个命令来解决数值之间的运算。至于怎么用,简单粗暴,直接看程序:
#!/bin/bash
a=`expr 5 + 10`
echo "a=$a"
执行脚本的结果
a=15
注意点
等号之间不能有空格
表达式expr以及加号+与数值之间要有空格
使用的是反引号`把他们圈起来,而不是单引号。
问题:为啥他们之间要有空格?
考考你。
下面我演示一下加减乘除。
#!/bin/bash
a=20
b=40
#加法
c=`expr $a + $b`
echo "a+b=$c"
#减法
c=`expr $a - $b`
echo "a-b=$c"
#乘法,注意有个\
c=`expr $a \* $b`
echo "a*b=$c"
#除法
c=`expr $a / $b`
echo "a/b=$c"
输出结果
a+b=40
a-b=-20
a*b=800
a/b=2
注意点
乘号(*)前边需要加转义字符(\)才行哦。
在MAC中shell的expr语法相当于:$((表达式)),此处表达式中的”*”不需要加转义字符\
关系运算符
关系运算符就是用来比较两个数之间的大小的。不过需要注意的是,我下面列举的关系运算符是不支持字符串的,除非字符串的值是数字
常用关系运算符如下:
-eq:判断是否相等,相等则返回true,否则返回false。下面类似
-nq:判断是否不相等。
-gt:判断左边的数是否大于右边的。
-lt:判断左边的数是否小于右边的。
-ge:判断左边的数是否大于等于右边
-le:判断左边的数是否小于等于右边。
直接看程序,相信你们看一下就知道如何使用了,这些都挺简单,没有什么好详细讲的。
a=10
b=20
if [ $a -eq $b ]
then
echo "相等"
else
echo "不相等"
fi #记得加上fi代表结束
输出结果:
不相等
我就演示一个,其他类似。
有关字符串的一些运算符
下面列举一些常用于字符串的运算符
=:判断两个字符串是否相等。相等则返回true,否则返回false。注意啊,这个和我们平时用的’==’不一样哦。
!=:判断两个字符串是否不相等。
-z:检测字符串的长度是否为0。
-n:检测字符串长度是否不为0。
str:检测字符串是否为空。
简单暴力,直接代码演示,相信聪明的你们一眼就知道怎么用了
#!/bin/bash
a="aa"
b="bb"
if [ $a = $b ]
then
echo "a与b相等"
else
echo "a与b不相等"
fi
if [ -z $a ]
then
echo "a字符串的长度为0"
else
echo "a字符串的长度不为0"
fi
输出结果:
a与b不相等
a字符串的长度不为0
大家多动手试试勒
好吧,可能要跟大家说声抱歉。讲着讲着讲的有点粗糙。也有点随便。本来想好好扯的,还有很多细节很多知识。不过·····不知为啥,就突然内心有点烦躁····居然烦躁那可以留着明天或者之后写啊。不过虽然是简单的一点东西,但是写起来真的很花时间,就不想留了之后写了。在此要和大家说声抱歉。也感谢大家的阅读,希望对你有所帮助勒。
推荐阅读:
shell编程 —- Shell入门介绍
Shell编程 —- 变量
感谢你的阅读,希望对你有所帮助
关注我的公众号:苦逼的码农
每天推送技术文章,各种资源以及
每日一题 有关面试的算法题