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

相关推荐

  • curl

    文章目录curl补充说明语法选项实例文件下载不输出错误和进度信息断点续传使用curl设置参照页字符串用curl设置用户代理字符串curl的带宽控制和下载配额用curl进行认证只打印…

    入门教程 2023年 12月 7日
  • lpr

    文章目录lpr补充说明语法选项参数实例 lpr 将文件发送给指定打印机进行打印 补充说明 lpr命令 用于将文件发送给指定打印机进行打印,如果不指定目标打印机,则使用默认打印机。 …

    入门教程 2023年 12月 19日
  • sudo

    文章目录sudo补充说明语法选项参数实例 sudo 以其他身份来执行命令 补充说明 sudo命令 用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了…

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

    文章目录strace补充说明语法选项实例常用参数说明综合例子 strace 跟踪系统调用和信号 补充说明 strace命令 是一个集诊断、调试、统计与一体的工具,我们可以使用str…

    入门教程 2024年 3月 11日
  • Git 创建仓库

    本章节我们将为大家介绍如何创建一个 Git 仓库。 你可以使用一个已经存在的目录作为 Git 仓库。 Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多…

    2024年 4月 30日
  • xlsatoms

    文章目录xlsatoms补充说明语法选项 xlsatoms 列出X服务器内部所有定义的原子成分 补充说明 xlsatoms命令 用于列出X服务器内部所有定义的原子成分,每个原子成分…

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

    文章目录Map什么是 map?如何创建 map?向 map 中插入元素访问 map 中的元素遍历 map 中的所有元素删除元素结构体 map (Map of Structs)map…

    2023年 12月 5日
  • openssl

    文章目录openssl补充说明实例 openssl 强大的安全套接字层密码库 补充说明 OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理…

    入门教程 2024年 3月 1日
  • uucico

    文章目录uucico补充说明语法选项实例 uucico UUCP文件传输服务程序 补充说明 uucico命令 命令UUCP文件传输服务程序。 uucico是用来处理uucp或uux…

    入门教程 2024年 3月 11日
  • 解决WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

    远程连接ssh服务器时,若服务器系统发生了改变,旧的鉴权无法生效时,在登陆时会提示以下问题。 WARNING: REMOTE HOST IDENTIFICATION HAS CHA…

    2021年 7月 13日

发表回复

登录后才能评论
Translate »