Shell脚本学习笔记(三)--算术运算

本文介绍了在Bash脚本中进行算术运算的方法,包括处理变量缺失的情况、使用不同进制数字、避免语法错误的技巧及如何正确使用外部程序expr进行运算。还涉及到了变量声明、算术表达式的书写规范等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算术运算


2011031214252748.jpg

在求值时,如果算术式中变量不存在或空值,则该变量的值为0

不同进制的数字使用"基底#数字"的表示法,其中基底范围为2~64

算术扩展:
如果表达式中有变量,该变量名称之前最好不要加上$,以免该变量不存在造成语法的错误
如果除法的运算结果有余数,则无条件舍去
示例:

ContractedBlock.gifExpandedBlockStart.gifView Code
1 #!/bin/bash
2 declare -i a i q s=0
3 a=${1:-255}
4 mask="128 64 32 16 8 4 2 1"
5 Bmap=
6
7  echo "1的二进位128 64 32 16 8 4 2 1"
8  for i in $mask
9  do
10 q=$((a/i))
11 s=$((s+q))
12 [ $q -gt 0 ] && Bmap=$Bmap"__1__" || Bmap=$Bmap"__0__"
13 a=$((a-q*i))
14 done
15
16 echo " $s : $Bmap"

使用外部程序expr:
好处:expr的本来作用是在“标准输出”显示表达式的值。利用这一特性,可以当做一个算术运算的工具。而且,由于它是外部程序,和shell的版本没有关系,几乎在各种os平台上都可以执行。跨平台。
使用expr时,要特别注意“表达式”中是否含有bash shell的特殊字符,如*,|,<,>,!,&,(,)等,如果有要用\予以转义,否则出错。其次,在“表达式”中,运算符和操作数直接至少要有一个以上的空格符隔开。
支持的运算种类:加减...,对比样式,找出子字符串的位置,取子字符串,计算字符串长度,视关键词为一般字符串等

$[]和$(())类似

declare:
事先改变变量的属性
算式中,运算符和操作数之间不可以有空格符,要紧密连接
特殊符合不必使用\转义
算是中,可以包含其他变量,变量之前不必加$
let与之类似

转载于:https://www.cnblogs.com/njucslzh/archive/2011/03/12/1982211.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值