shell 5 :declare、typeset与let

1 declare与typeset

declare 和 typeset 都是 Shell 内置命令,它们的用法相同,都用来设置变量的属性。不过 typeset 已经被弃用了,建议使用 declare 代替。

declare 命令的用法如下所示:

declare [+/-] [aAfFgilprtux] [变量名=变量值]

其中,-表示设置属性,+表示取消属性,aAfFgilprtux都是具体的选项,它们的含义如下所示:

-f [name]       列出之前由用户在脚本中定义的函数名称和函数体。

-F [name]      仅列出自定义函数名称。

-g [name]      在 Shell 函数内部创建全局变量。

-p [name]      显示指定变量的属性和值。

-a [name ]      声明变量为普通数组。

-A [name]      声明变量为关联数组(支持索引下标为字符串)。

-i [name]      将变量定义为整数型。

-r [name=value]   将变量定义为只读(不可修改和删除),等价于 readonly name。

-x [name=value]   将变量设置为环境变量,等价于 export name=value。

#!/bin/bash
declare -i a c sum  #将多个变量声明为整数
a=2000
b=21
sum=$a+$b
echo $sum
#将变量定义为只读变量
declare -r d=10
d=22
echo $d

2 let 

let 命令和双小括号 (( )) 的用法是类似的,它们都是用来对整数进行运算,不能对小数(浮点数)或者字符串进行运算。

Shell let 命令的语法格式为:

let 表达式

或者

let "表达式"

或者

let '表达式'

和 (( )) 类似,let 命令也支持一次性计算多个表达式,并且以最后一个表达式的值作为整个 let 命令的执行结果。但是,对于多个表达式之间的分隔符,let 和 (( )) 是有区别的:

let 命令以空格来分隔多个表达式;

(( )) 以逗号,来分隔多个表达式。

对于类似let x+y这样的写法,Shell 虽然计算了 x+y 的值,但却将结果丢弃;若想获得计算的结果,可以使用let sum=x+y将 x+y 的结果保存在变量 sum 中。

#!/bin/bash
a=2000
let a+=21
echo $a

b=21
let a-=20 c=a+b	#多个表达式以空格分开
echo $a $c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值