readonly
标记shell变量或函数为只读
语法
1readonly [-aAf] [name[=value] ...]
2readonly -p
主要用途
- 定义一到多个变量并设置只读属性。
- 为已定义的一到多个变量设置只读属性。
- 显示全部包含只读属性的变量。
- 为已定义的一到多个函数设置只读属性。
- 显示全部包含只读属性的函数。
选项
1-a:指向数组。
2-A:指向关联数组。
3-f:指向函数。
4-p:显示全部只读变量。
5--:在它之后的选项无效。
参数
1name(可选):变量名或函数名
2value(可选):变量的值
返回值
readonly返回true除非你提供了非法选项或非法名称。
例子
1# 定义变量并增加只读属性
2readonly var1=13 var2
3readonly -a arr1=(1 2 3 4 5) arr2=('z' 'x' 'c')
4# 必须有 '-A' 选项
5readonly -A dict1=(['key1']='value1')
1# 先定义变量、函数,然后再为它们添加只读属性
2max=3
3readonly max
4
5# 数组定义时可以不加 `declare -a`
6seasons=('spring' 'summer' 'autumn' 'winter')
7# 为数组添加只读属性时可以不加 `-a` 选项
8readonly seasons
9
10declare -A man=(['age']=23 ['height']='190cm')
11# 为关联数组添加只读属性时可以不加 `-A` 选项
12readonly man
13
14function foo(){ echo 'bar'; }
15# 为函数添加只读属性时必须加 `-f` 选项
16readonly -f foo
1# 显示全部只读变量,以下两个命令的显示结果一样
2readonly
3readonly -p
4# 显示全部拥有只读属性的数组
5readonly -a
6# 显示全部拥有只读属性的关联数组
7readonly -A
8# 显示全部拥有只读属性的函数
9readonly -f
常见错误
对于只读变量而言,若用户对其值进行修改,则会立即报错。例如,使用该指令定义一个只读变量"test",并且将其值初始化为"ok",输入如下命令:
1[root@localhost ~]# readonly test='ok' #定义只读变量并初始化
那么当用户直接修改该只读变量时就会报错,如下所示:
1[root@localhost ~]# test='my' #试图修改只读变量的值
2-bash: test: readonly variable
当用户试图修改只读变量的值时,会被提示该变量为只读变量。
注意
- 该命令是bash内建命令,相关的帮助信息请查看
help
命令。 declare +r
不能去除只读属性,unset
不能删除只读变量。
来源:https://github.com/jaywcjlove/linux-command
最后修改于: Wednesday, January 31, 2024
版权申明:
- 未标注来源的内容全部为原创,未经授权请勿转载(因转载后排版往往错乱、内容不可控、无法持续更新等);
- 非营利为目的,演绎本博客任何内容,请以'原文出处'或者'参考链接'等方式给出本站相关网页地址(方便读者)。