[shell]shell运算

算术运算

首先这里所说的算术运算是指加法(+), 减法(-),乘法(*),整除(/), 求余(%)四种运算,可以通过添加括号改变优先级,并且只能对整数进行运算(Linux Bash Shell默认不支持浮点数运算)

#!/bin/bash

val=`expr 2 + 2` #expr 参数要为整数
echo "Total value : $val"

a=10
b=-5
c=`expr $a + $b` #+前后空一格,否则输a+b=10+20
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"

if [ $a == $b ] #在[]和==前后要有一空格,且必须有[]
then
    echo "a = b"
fi

if [ $a != $b ]
then  #then需要另启一行,不能与if在同一行
    echo "a!=b"
fi

let "sum=3+6"
echo $sum

sum=$(( 7 * 8 ))
echo $sum

要在Linux Bash Shell中进行算术运算,有三种写法

一、使用let命令

let "sum=3+5"    # sum <- 8
let "sum=3*5"    # sum <- 15
let "sum=2/5"    # sum <- 0
let "sum=11/5"   # sum <- 2
let "sum=11%5"   # sum <- 1
let "sum=-6-9"   # sum <- -15
let "sum=(-6-9)*5"  # sum <- -75

注意, 等号右边以及运算符和括号的两边都不能有空格

二、使用expr命令

sum=`expr 2 - 5`     # sum <- -3
sum=`expr 2 + 5`     # sum <- 7
sum=`expr 3 \* 5`    # sum <- 15
sum=`expr 3 / 5`     # sum <- 0
sum=`expr 7 / 5`     # sum <- 1
sum=`expr \( 2 - 3 \) \* 6`   # sum <- -6
sum=`expr 2+4`       # sum <- 2+4
sum=`expr 2-4*6·     # sum <- 2-4*6
sum=`expr 1-(5-8)`   # sum <- 1-(5-8)

注意: 乘号(*), 左括号( , 右括号)必须使用反斜杠(\)转义expr右边以及运算符和括号的两边必须有空格; 如果采用紧凑的写法(紧凑格式可以不对*, (, )进行转义), 则返回算术表达式.

三、使用(( ... )) 的形式

sum=$((3+5))           # sum <- 8
sum=$(( 3 - 5 ))       # sum <- -2
sum=$(( 3 * 5 ))       # sum <- 15
sum=$(( 7 / 5 ))       # sum <- 1
sum=$(( 7 % 5 ))       # sum <- 2
sum=$(( (1 - 2 )  * 4 ))   # sum <- -4

这种写法比较自由,无需对运算符和括号做转义处理,也可以采用松散或紧凑的格式.

布尔运算

#!/bin/sh
a=10
b=200
#-o	 或运算 or
#-a	 与运算 and
if [ $a != $b ]
then
   echo "$a != $b : a is not equal to b"
fi

if [ $a -lt 100 -a $b -gt 15 ]
then
   echo "$a -lt 100 -a $b -gt 15 : returns true"
fi

if [ $a -lt 100 -o $b -gt 100 ]
then
   echo "$a -lt 100 -o $b -gt 100 : returns true"
fi 

[shell]shell运算

时间: 2024-11-09 20:47:14

[shell]shell运算的相关文章

shell数值运算

shell数值运算: "+":相加 "-":相减 "*":相乘 "/":相除 示例: $((2+3)) $(($a-$b)) $(($a*$b)) $(($a/$b)) 相除时结果取整(不带小数点),小于0按0算,如果想算百分比,$(($a*100/$b))% 浮点数计算: echo $(echo "2.1+3"|bc)

[Shell] Shell 中的算术

Shell 脚本变量默认是作为字符串处理,而不是数字,这使得在 Shell 脚本做数学运算显得较为复杂.在保持脚本编程规范和更好的算术支持方便,Perl 和 Python 会是更好的选择.但是你仍然可以选择在 Shell 中进行算术.事实上,过去许多年来,Unix 已经增加多种特性来支持数字处理. 备注:正如下文所示,一些帮助处理数字的命令在某些方便表现仍不够完善,例如运算符周围的空格. declare 在 Shell 中你无需提前声明变量,但如果你提前声明一个整型变量,那么以下示例将展示整型变

[shell]Shell简介

Shell简介 它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序.建立文件并以并行的方式协调各个程序的运行.因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系统的关键.可以说,shell使用的熟练程度反映了用户对Unix/Linux使用的熟练程度. Shell有两种执行命令的方式: 交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条.

[Shell]Shell基本功能:历史命令 &amp; 别名

-------------------------------------------------------------------------------------------------------- 一. 历史命令 history    #查看历史命令 history -c #清空历史命令 history -w #不等退出,直接把缓存中的历史命令写入历史命令保存文件-/.bash_history vim /etc/profile  #默认历史命令保存1000条,可修改HISTSIZE保

[shell]shell输入输出重定向

Unix 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示.一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器. 一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件: 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据. 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据. 标准错误文件(stderr):stderr的文件描述符为2,

[Shell]Shell脚本的执行方式

---------------------------------------------------------------------------------------------------------- 能完成大部分输出任务的命令:echo echo helloworld; #正确 echo "hello world";   #正确 echo "hello world !"; #中间有空格须加引号,且!在Linux中有特殊含义,不能加双引号,而用单引号(注

[Shell]Shell基本功能:输入输出重定向

/*----------------------------------------------------------------------------------------------- @黑眼诗人 <www.chenwei.ws> -----------------------------------------------------------------------------------------------*/ 输入输出重定向的作用: 输出重定向就是把命令的执行结果保存到

SDK/JDK,Shell/Shell脚本,Apache/APR ,MTK

SDK 软件开发工具包(SoftwareDevelopmentKit) API(Application Programming Interface,应用编程接口)其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API而使操作系统去执行应用程序的命令(动作). Android SDK 指的是Android专属的软件开发工具包 DLL,即 Dynamic Link Library(动态链接库).在 Windows 环境下含有大量 .dll格式的文件,.dll 文件不能直接执行

shell算数运算

咖啡喝多了.估计今夜无眠了.妈蛋. shell的算数运算.有太多了.包括很多网上可以下载到的工具.数不胜数.本文只选取常用的进行介绍. 1. $[ ] 这个可能用得比较少.包括我自己第一次见到这个一个东西的时候也很好奇.不过还真的能够达到效果.仅限于整形.不能用来计算浮点数. 缺点是计算有局限性.貌似职能计算加减乘除和模运算. 注:**表示的是幂运算. 2. $(()) 我喜欢把这个叫做C语言模式.无论是在条件判断或者循环中,还是放在这里.变量都没有限制.仅限于整形,浮点数不能用这个表达式. 3