在构建bash脚本时,我在创建变量时使用了大量的readonly和local -r。这会迅速地填充脚本并降低代码的可读性(和重复性)。是否有一种方法(如脚本顶部的set标志)默认情况下使所有变量都是readonly和/或local -r?
加上附加的警告,它必须在3.2.57(1)-release上工作,就像我在macOS上一样。
我很确定这是不可能的,但我想确认一下。
请不要回答“删除bash并使用适当的脚本语言”。我也使用其他脚本语言。bash脚本有它们的位置,我喜欢对它们进行编码。
发布于 2020-06-20 21:37:42
是否有一种方法(如脚本顶部的set标志)使所有变量默认为只读和/或本地-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发布于 2017-04-06 13:48:34
通过使用declare函数,您可以使变量只读。在函数中使用时,声明使变量成为局部变量。
声明的语法如下:
declare arg VARIABLE=value
要使变量只读,可以使用-r参数:
declare -r num=12
更多信息可以在这里找到:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_10_01.html
不知道这是不是你想要的,但我认为这和你和巴什的关系一样好
https://unix.stackexchange.com/questions/355725
复制相似问题