#!/bin/sh
# first, we create a variable and assign it a value
my_var=first_assign
# after that, we mark the variable as read-only
readonly my_var
# any further assignment attempt will be met with an error
my_var=any_further_assign
错误消息可能因外壳而略有不同,例如:
dash:
readonly_assignment: 10: my_var: is read only
bash:
readonly_assignment: line 10: my_var: readonly variable
您可以使用只读变量
a
并b
初始化只读变量,c
就像您在问题中显示的那样。一般来说,你会想要使用
即引用扩展。如果变量
IFS
的值包含 digit2
,则它可能会导致 中的空值c
。该值将为空,因为 shell 会将参数拆分为readonly
on2
,从而导致命令被执行。
例子:
请注意,并非所有 shell 都这样工作:
我喜欢在我的 shell 脚本中使用常量=只读变量。
也就是说,我已经和他们有很多麻烦了。
替代解决方案(引用)
我现在在这里投票支持答案,因为它很好地解释了这个问题。
但是,我处理这个问题的方式不同:首先,我为普通变量赋值,然后将其标记为只读,示例如下:
错误消息可能因外壳而略有不同,例如:
dash
:bash
:zsh
: