Linux Shell 内建命令 : readonly 命令详解

readonly命令用于声明变量或函数的属性为只读,声明后这些变量或函数不可修改。在声明只读属性时,“-a”用于索引即下标数组,“-A”用于关联即键值对数组,“-f”用于函数,不使用这三个选项时默认为变量,对函数没有影响,后面跟着变量名或函数名name,对于变量来说,可以在声明只读属性的同时进行赋值,函数则没有这个用法。不指定任何选项或者指定了选项“-p”时,显示当前的只读变量,包括数组,不包括函数。如果只使用选项”-a“或”-A“或”-f“,则相应的只显示当前只读的索引数组或关联数组或函数。成功执行时,readonly命令的退出状态为0。

语法

readonly(选项)(参数)

选项

-f:定义只读函数;
-a:定义只读数组变量;
-p:显示系统中全部只读变量列表。

参数

变量定义:定义变量,格式为“变量名=‘变量值’”。

实例

使用readonly命令显示系统中所有的已经定义的只读变量,输入如下命令:

[root@localhost ~]# readonly     #显示只读变量
declare -ar BASH_VERSINFO='([0]="3" [1]="2" [2]="25" [3]="1" [4]="release" [5]="i686-redhat-linux-gnu")'
declare -ir EUID="0"
declare -ir PPID="31436"
declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"
declare -ir UID="0"

对于只读变量而言,若用户对其值进行修改,则会立即报错。例如,使用该指令定义一个只读变量"test",并且将其值初始化为"ok",输入如下命令:

[root@localhost ~]# readonly test='ok'         #定义只读变量并初始化 

那么当用户直接修改该只读变量时,就会被报错,如下所示:

[root@localhost ~]# test='my'                 #试图修改只读变量的值
-bash: test: readonly variable

declare -r variable不能去除只读属性,unset不能删除只读变量。

不能更改内容,不能重设,只有当前shell注销后才失效。

如果想用readonly 但只是临时使用,可以开启子shell下,不影响当前shell

如:

yexiang@ubuntu:$ (readonly bbb='ok';echo $bbb)          
ok
yexiang@ubuntu:$ echo $bbb

yexiang@ubuntu:$

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HarkerYX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值