readonly

readonly

标记shell变量或函数为只读

语法

readonly [-aAf] [name[=value] ...]
readonly -p

主要用途

  • 定义一到多个变量并设置只读属性。
  • 为已定义的一到多个变量设置只读属性。
  • 显示全部包含只读属性的变量。
  • 为已定义的一到多个函数设置只读属性。
  • 显示全部包含只读属性的函数。

选项

-a:指向数组。
-A:指向关联数组。
-f:指向函数。
-p:显示全部只读变量。
--:在它之后的选项无效。

参数

name(可选):变量名或函数名
value(可选):变量的值

返回值

readonly返回true除非你提供了非法选项或非法名称。

例子

# 定义变量并增加只读属性
readonly var1=13 var2
readonly -a arr1=(1 2 3 4 5) arr2=('z' 'x' 'c')
# 必须有 '-A' 选项
readonly -A dict1=(['key1']='value1')
# 先定义变量、函数,然后再为它们添加只读属性
max=3
readonly max

# 数组定义时可以不加 declare -a
seasons=('spring' 'summer' 'autumn' 'winter')
# 为数组添加只读属性时可以不加 -a 选项
readonly seasons

declare -A man=(['age']=23 ['height']='190cm')
# 为关联数组添加只读属性时可以不加 -A 选项
readonly man

function foo(){ echo 'bar'; }
# 为函数添加只读属性时必须加 -f 选项
readonly -f foo
# 显示全部只读变量,以下两个命令的显示结果一样
readonly
readonly -p
# 显示全部拥有只读属性的数组
readonly -a
# 显示全部拥有只读属性的关联数组
readonly -A
# 显示全部拥有只读属性的函数
readonly -f

常见错误

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

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

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

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

当用户试图修改只读变量的值时,会被提示该变量为只读变量。

注意

  1. 该命令是bash内建命令,相关的帮助信息请查看help命令。
  2. declare +r不能去除只读属性, unset不能删除只读变量。

若文章对你有帮助,可以点赞或打赏支持我们。发布者:Aurora,转载请注明出处:http://61.174.243.28:13541/AY-knowledg-hub/readonly/

(0)
AuroraAurora站点维系者
上一篇 2024年 3月 1日 下午5:02
下一篇 2024年 3月 1日 下午5:18

相关推荐

  • Linux统计文件夹下的文件数目

    Linux下有三个命令:ls、grep、wc。通过这三个命令的组合可以统计目录下文件及文件夹的个数。 统计当前目录下文件的个数(不包括目录) ls -l | grep "…

    入门教程 2024年 4月 18日
  • vgconvert

    文章目录vgconvert补充说明语法选项参数实例 vgconvert 转换卷组元数据格式 补充说明 vgconvert命令 用于转换指定LVM卷组的元数据格式,通常将“LVM1”…

    入门教程 2024年 3月 11日
  • volname

    文章目录volname补充说明语法参数 volname 显示指定的ISO-9660格式的设备的卷名称 补充说明 volname命令 用于显示指定的“ISO-9660”格式的设备的卷…

    入门教程 2024年 3月 11日
  • Mutex

    文章目录MutexMutex含有竞态条件的程序使用 Mutex使用信道处理竞态条件Mutex vs 信道 Mutex 上一节:第二十四篇 Select下一节:第二十六篇 结构体取代…

    2023年 12月 5日
  • enable

    文章目录enable概要主要用途选项参数返回值例子(以下内容限于篇幅不再列出返回值部分)Q&A注意 enable 启动或禁用shell内建命令 概要 enable [-a]…

    入门教程 2023年 12月 14日
  • pushd

    文章目录pushd概要主要用途选项参数返回值例子注意参考链接 pushd 将目录添加到目录堆栈顶部。 概要 pushd [-n] [+N | -N | dir] 主要用途 将目录添…

    入门教程 2024年 3月 1日
  • IOS加速度传感器(accelerometer)

    文章目录简介实例步骤输出 简介 加速度传感器是根据x、y和z三个方向来检测在设备位置的改变。 通过加速度传感器可以知道当前设备相对于地面的位置。 以下实例代码需要在真实设备上运行,…

    2023年 3月 30日
  • Helm | Helm 仓库索引

    文章目录helm repo index简介可选项从父命令继承的命令请参阅 helm repo index 基于包含打包chart的目录,生成索引文件 简介 读取当前目录,并根据找到…

    入门教程 2023年 12月 14日
  • ulimit

    文章目录ulimit补充说明语法选项实例 ulimit 控制shell程序的资源 补充说明 ulimit命令 用来限制系统用户对shell资源的访问。如果不懂什么意思,下面一段内容…

    入门教程 2024年 3月 11日
  • tempfile

    文章目录tempfile补充说明tempfile命令$$变量 tempfile shell中给临时文件命名 补充说明 有时候在写Shell脚本的时候需要一些临时存储数据的才做,最适…

    入门教程 2024年 3月 11日

发表回复

登录后才能评论
Translate »