前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【linux命令讲解大全】055.readonly命令:标记Shell变量或函数为只读

【linux命令讲解大全】055.readonly命令:标记Shell变量或函数为只读

作者头像
全栈若城
发布2024-03-02 13:16:51
1070
发布2024-03-02 13:16:51
举报
文章被收录于专栏:若城技术专栏若城技术专栏

readonly

标记shell变量或函数为只读

语法

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

主要用途

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

选项

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

参数

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

返回值

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

例子

代码语言:javascript
复制
# 定义变量并增加只读属性
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",输入如下命令:

代码语言:javascript
复制
[root@localhost ~]# readonly test='ok'        #定义只读变量并初始化 

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

代码语言:javascript
复制
[root@localhost ~]# test='my'                 #试图修改只读变量的值
-bash: test: readonly variable

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-02-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • readonly
    • 语法
      • 主要用途
        • 选项
          • 参数
            • 返回值
              • 例子
                • 常见错误
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档