shell 整型变量定义

本文介绍如何在Bash脚本中定义整型变量并进行数学运算,包括使用declare-i命令声明整型变量的方法,以及如何正确执行整数加法等运算。此外,还介绍了Bash对于不同进制数的支持。

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

4.8 定义整型变量命令declare -i

用带选项-i 的declare 命令,可以使变量具有整数(integer)属性。Bash 本质上只有字符型变量,但通常也可以说:定义整型变量。

例如,希望得到45+20 的整数运算结果:


$ M=45+20
$ echo $M
45+20

执行M=45+20 之后,M 的值为字符串45+20 , 而不是希望得到的65 。执行M=$((45+20),或let M=45+20 才能得到65。如果事先声明变量是整型数,就不必使用$((…))或者let。见下例:


$ declare -i K
$ K=45+20
$ echo $K
65

再看一个例子。C 被声明为整型变量,所以C 的值为15+30=45;D 没有被声明为整型,所以D 的值是字符串15+30,而不是期望得到的45:


$ A=15 B=30
$ declare -i C=$A+$B
$ D=$A+$B
$ echo C=$C, D=$D
C=45, D=15+30

如果整型数被赋值为字符或不带空格的字符串时,系统不会报错,并且整型变量实际被赋值为0:

$ declare -i M # 声明整型变量M
$ M="web" # 变量M 被赋值为无空格的字符串
$ echo $M
0 # 显示M 的值为0

整型数被赋值为带空格的字符串时,系统将报错:

$M="web site" # 变量M 被赋值为带空格的字符串,出错
bash: web site: syntax error in expression (error token is "site")

前面提到的数都是十进制数,Bash 支持其他进制的数,支持的范围是从二进制到六十四进制。非十进制数赋值的格式为:


变量=基数#数值

基数的取值范围为2 到64,常用的有二进制、八进制、十六进制等。例如:

$ declare -i x
$ x=2#110 # 二进制的110 赋给x
$ echo $x
6 # 二进制的110 就是十进制的6
$ x=8#16 # 八进制的16 赋给x
$ echo $x
14 # 八进制的16 就是十进制的14
$ x=16#2A # 十六进制的2A 赋给x
$ echo $x
4 2 # 十六进制的2A 就是十进制的42

以0 开头的数表示八进制数,以0x 开头的数表示十六进制数,这一点与C 语言一致。例如:


$ x=025 # 八进制的25 赋给x
$ echo $x
21 # 八进制的25 就是十进制的21
$ x=0x25 # 十六进制的25 赋给x
$ echo $x
37 # 十六制的25 就是十进制的37

赋值时,某一位数大于基数的话,赋值将失败。例如:


$ x=029 # 以0 开头的为八进制数,数字只能取0 到7,9 超出基数,赋值失败
bash: 029: value too great for base (error token is "029")
$ x=16#2G # 十六进制数字只能取0 到9、A 到F,G 超出基数,赋值失败
bash: 16#2G: value too great for base (error token is "16#2G")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值