当前位置:   article > 正文

shell 5 :declare、typeset与let_declare let

declare 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。

  1. #!/bin/bash
  2. declare -i a c sum #将多个变量声明为整数
  3. a=2000
  4. b=21
  5. sum=$a+$b
  6. echo $sum
  7. #将变量定义为只读变量
  8. declare -r d=10
  9. d=22
  10. 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 中。

  1. #!/bin/bash
  2. a=2000
  3. let a+=21
  4. echo $a
  5. b=21
  6. let a-=20 c=a+b #多个表达式以空格分开
  7. echo $a $c

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/360090
推荐阅读
相关标签
  

闽ICP备14008679号