9.2 变量类型标注:declare 与 typeset
内建命令 declare 和 typeset 是完全相同的命令,其被用于修改变量的属性。相比起一部分编程语言来说,这种修改属于非常弱的类型标注方式。declare 命令只有在 Bash version 2 及更高版本才能使用,而 typeset 命令可以在 ksh 脚本中运行。
declare/typeset 命令选项
declare/typeset 命令选项-r 只读(readonly)
(declare -r var1 与 readonly var1 的作用相同)
该选项约等于 C 语言中的类型限定符 const。任何尝试修改只读变量的行为都会导致脚本出错。
declare -r var1=1
echo "var1 = $var1" # var1 = 1
(( var1++ )) # x.sh: line 4: var1: readonly variable-i 整型(integer)
declare -i number
# 脚本会将之后所有出现的 "number" 变量的类型都视作整型。
number=3
echo "Number = $number" # Number = 3
number=three
echo "Number = $number" # Number = 0
# 脚本试图将字符串 "three" 视为整型。被视为整型的变量无需命令 expr 或是 let 即可进行数学运算。
-a 数组(array)
变量 indices 会被视作 数组。
-f 函数(function)
如果没有在 declare -f 后带上任何参数,该语句将会列出在脚本中已经定义的所有函数。
而 declare -f function_name 则仅仅列出名为 function_name 的函数。
-x 导出(export)
该语句声明了变量 var3 可以导出到该变量所属脚本之外的 shell 环境中。
-x var=$value
declare 命令允许在设置变量属性的同时给变量赋值。
样例9-10. 使用 declare 命令标注变量类型
declare 命令标注变量类型使用内建命令 declare 还可以限制变量的 作用域。
但是...
注记
Last updated
Was this helpful?