在构建bash
脚本时,我在创建变量时使用了大量的readonly
and local -r
。这会快速填满脚本并降低代码的可读性(并且重复性)。有没有办法(比如set
脚本顶部的标志)来创建所有变量readonly
和/或local -r
默认?
加上额外的警告,它必须在3.2.57(1)-release
macOS 上运行。
我很确定这是不可能的,但想确定一下。
请不要回答“放弃bash
并使用正确的脚本语言”。我也使用其他脚本语言。bash
脚本有其用武之地,我喜欢对它们进行编码。
答案1
有没有办法(比如在脚本顶部设置标志)使所有变量默认为只读和/或本地 -r ?
否,除非您将源代码编辑为bash
.
但是,您可以声明别名,以便减少将变量设置为只读所需的语义糖。
例如,
#!/bin/bash
#
shopt -s expand_aliases
alias lr='local -r'
demo() {
lr a=123
echo "$a"
((a++)) # Correctly fails with "a: readonly variable"
}
demo
答案2
通过使用宣布函数您可以使变量只读。当在函数中使用时宣布使变量成为局部变量。
语法为宣布这是:
declare arg VARIABLE=value
要使变量只读,您可以使用-r争论:
declare -r num=12
更多内容可以在这里找到:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_10_01.html
不确定这是否正是您正在寻找的,但我认为它与您使用 BASH 所能获得的一样好