Shell 脚本 - 只读命令
在本教程中,我们将了解“只读”命令。
使用 readonly 命令,您可以将特定值分配给变量,该变量既不能被后续赋值更改或修改,也不能被取消设置。
句法:
readonly name[=value]
readonly [-aAf] [name[=value]
最常用的选项:
-p : It prints all the defined readonly variables
-f : It is used when you want to make a function as readonly
要获得有关其使用的进一步帮助,您可以使用以下命令:
readonly --help
用法示例:
- 导航到终端并使用命令创建一个名为“gfg.sh”的文件
touch gfg.sh
- 使用以下命令打开 vim 编辑器:
vim gfg.sh
- 现在进入插入模式,按键盘上的“i”。
现在让我们开始编写一个 shell 脚本,我们首先将一个值分配给一个变量,使其成为只读的,然后再次尝试更改它的值。
#! /bin/bash
echo "Learning shell commands"
# defining a variable "myvar"
myvar="geeksforgeeks"
echo " The value variable 'myvar' currently is: $myvar"
# making that variable as read only
readonly myvar
echo "Hold on! Trying to change the value of 'myvar'....."
# trying to change the variable
myvar="gfg"
- 现在要保存它,请按 Esc 退出插入模式,然后键入 ':w' 它将保存脚本。保存后,文件的最后一行将如下所示:
- 现在只需输入“:q”即可退出编辑器。
- 使用以下命令测试脚本:
bash gfg.sh
运行脚本后,您会看到在第 10 行出现错误,我们试图更改变量的值。
此外,您还可以使用 -r 标志与 declare 命令一起将变量设置为只读。要了解有关“declare”命令的更多信息,请参阅这篇文章:在 Linux 中使用示例声明命令
现在让我们声明一些只读函数:
如果您现在将运行以下命令:
readonly -f
它将显示所有标记为只读的功能
同样,如果您运行以下命令:
readonly or readonly -p
然后它将列出所有变量及其定义为只读的值(这包括默认的只读变量)
取消设置或修改只读变量
在上面的示例脚本“gfg.sh”中,我们已经看到标记为只读的变量的值无法修改。
此外,不能使用“unset”命令取消设置只读变量的值。
将变量设置为只读有助于保护您的变量免受任何进一步的修改并提高代码的可读性。请注意,当一个会话中标记为只读的变量在另一个会话中导出时,其值可以更改。
当我们试图在当前 shell(PID 为:1618 的 shell)中修改变量“myvar”的值时,它给出了一个错误。但是当我们将此变量导出到另一个会话(PID:1624)时,它的值已成功更改或修改。