Shell中的运算符

Shell中也可以实现基本算术运算,以及位运算。

我们总结起来有如下几点:

    1)基本的算术运算符:+、-、*、/、**都支持,最后的**是幂运算;

    2)算术运算要和一些命令结合才能使用,如expr`...`命令,$((...))命令,$[...]命令,let命令,注意:expr后面是反引号;

    3)一定要注意所有运算符两边都要有空格,比如result=`expr 2 + 3`就是正确的,如果是result=`expr 2+3`就是错误的!其余的运算符也是需要空格隔开!!

    4)运算公式中的括号运算、乘法运算一定要加转移符斜杠,即result=`expr \( 2 + 3 \) \* 5`才正确,除法运算不需要;

    5)expr不可以做幂运算;

#-----------------------------/chapter4/ex4-28.sh------------------
#! /bin/sh

#计算2和100的差,即-98
result=`expr 2 - 100`
echo "$result"
#计算2和100的和,即102
result=`expr 2 + 100`
echo "$result"
#计算2和5的乘积,即10,乘号一定要加转移符反斜杠
result=`expr 2 \* 5`
echo "$result"
#计算24和8的商,即3
result=`expr 24 / 8`
echo "$result"
#先计算2和6的差,然后再乘以12,即-48,括号一定要加转移符反斜杠
result=`expr \( 2 - 6 \) \* 12`
echo "$result"
#错误的语法
result=`expr 2+5`
echo "$result"
#错误的语法
result=`expr 2-4*9`
echo "$result"
#错误的语法
result=`expr 1-(4-7)`
echo "$result"

    6)使用$((...))也可以完成算法书运算,而且不需要对运算符和括号做转义处理!也不需要严格规定运算符两端加空格,空格可加可不加。如下:

#-----------------------------/chapter4/ex4-29.sh------------------
#! /bin/sh

#紧凑格式,计算3和6的和
result=$((3+6))
echo "$result"
#松散格式,计算3和9的和
result=$(( 3 + 9 ))
echo "$result"
#计算3和6的乘积
reuslt=$(( 3 * 6 ))
echo "$result"
#计算7和5的商
result=$(( 7 / 5 ))
echo "$result"
#计算8和3的余数
result=$(( 8 % 3 ))
echo "$result"
#复合运算
result=$(( ( 1-4 ) * 5 ))
echo "$result"

    所以,使用$((...))的形式更适合做算术运算。

    7)使用$[...]的形式和上面$((...))的形式一样,较常用;

#-----------------------------/chapter4/ex4-30.sh------------------
#! /bin/sh

#加法运算
result=$[4+5]
echo "$result"
#复合运算
result=$[(1+2)*3]
echo "$result"
#幂运算
result=$[ 2 ** 4 ]
echo "$result"

    8)let也可以实现算术运算。let后面直接接运算表达式,运算式中的变量不需要加$,直接使用,如下:

#-----------------------------/chapter4/ex4-31.sh------------------
#! /bin/sh

#定义变量
n=10
#加法运算
let n=n+1
echo "$n"
#乘法运算
let n=n*10
echo "$n"
#幂运算
let n=n**2
echo "$n"

    9)除了基本运算发之外,Shell还支持符合算术符:+=、-=、*=、/=、%=,以及位运算符:<<、>>、&、|、~、^、<<=、>>=、&=、|=、^=,还有自增++、自减--运算;

时间: 2024-11-08 04:23:00

Shell中的运算符的相关文章

02: shell中的if、case、for等语句

1.1 shell中常用运算符 运算符 描述 示例 文件比较运算符 -e filename 如果 filename 存在,则为真 [ -e /var/log/syslog ] -d filename 如果 filename 为目录,则为真 [ -d /tmp/mydir ] -f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ] -L filename 如果 filename 为符号链接,则为真 [ -L /usr/bin/grep ] -r

书写优雅的shell脚本(五)- shell中(())双括号运算符

在使用shell的逻辑运算符"[]"使用时候,必须保证运算符与算数之间有空格. 四则运算也只能借助:let,expr等命令完成. 今天讲的双括号"(())"结构语句,就是对shell中算数及赋值运算的扩展. 1.语法: ((表达式1,表达式2-)) 2.特点: (1)在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等. (2)在双括号结构中,所有变量可以不加入:"$"符号前缀. (3)双括号可以进行逻辑运算,四则运算 (4)双括号结

shell中的比较运算符和逻辑运算符

1.shell中的比较运算符: -eq       //等于-ne       //不等于-gt        //大于 (greater)-lt         //小于 (less)-ge       //大于等于-le        //小于等于 2.shell中的逻辑运算符: 逻辑与:    &&第一个条件为假时,第二个条件不用再判断,最终结果已经有:第一个条件为真时,第二个条件必须得判断.逻辑或:    ||逻辑非:       ! 原文地址:https://www.cnblog

shell中各种括号的作用

小括号里是命令大括号是变量值   一.小括号,圆括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. ②命令替换.等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令.有些shell不支持,如tcsh. ③用于初始化数组.如:array=(a b

[ SHELL编程 ] shell中各种括号的使用方法

转载自:http://www.jb51.net/article/60326.htm 在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下:1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+string},${var:=string},${var:?string} 5.$((exp)) 6.$(var%pattern),$(var%%pattern),$(var#pattern),$(var##pattern)现在分

shell中&amp;&amp;和||的使用方法

&&运算符: command1  && command2 &&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行:换句话说,"如果这个命令执行成功&&那么执行这个命令". 语法格式如下: command1 && command2 [&& command3 ...] 1 命令之间使用 && 连接,实现逻辑与的功能. 2 只

shell中if条件字符串、数字比对,[[ ]]和[ ]区别

shell中if条件字符串.数字比对,[[ ]]和[ ]区别 引用: http://www.51testing.com/?uid-7701-action-viewspace-itemid-13731 http://blog.csdn.net/sunboy_2050/article/details/6836382 shell 括号 学习shell的时候总是被shell里的条件判断方式搞得头疼,经常不知道改 用[],[[]],(())还是test,let,而很少有书把它们的关系讲解的很清楚(应该是我

1.Linux Shell中的变量

1. Shell变量类型 Shell是一种动态类型语言(不使用显式的数据声明)和弱类型语言(变量的类型操作根据需求而不同).Shell中的变量是不分类型的(都是字符串类型),但是依赖于具体的上下文,Shell编程也允许比较操作和整数操作. 2. Shell变量的分类 Shell中有3种变量:用户变量.位置变量(Processing Parameter).环境变量. 1.用户变量:用户在Shell编程过程中定义的变量,分为全局变量和局部变量.默认情况下,用户定义的Shell变量为全局变量,如果要指

shell中各种括号的作用()、(())、[]、[[]]、{}

一.小括号,圆括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. ②命令替换.等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令.有些shell不支持,如tcsh. ③用于初始化数组.如:array=(a b c d) 2.双小括号 (( ))