首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >默认情况下,在bash中使所有变量都是只读和本地的。

默认情况下,在bash中使所有变量都是只读和本地的。
EN

Unix & Linux用户
提问于 2017-04-03 23:42:09
回答 2查看 1.6K关注 0票数 3

在构建bash脚本时,我在创建变量时使用了大量的readonlylocal -r。这会迅速地填充脚本并降低代码的可读性(和重复性)。是否有一种方法(如脚本顶部的set标志)默认情况下使所有变量都是readonly和/或local -r

加上附加的警告,它必须在3.2.57(1)-release上工作,就像我在macOS上一样。

我很确定这是不可能的,但我想确认一下。

请不要回答“删除bash并使用适当的脚本语言”。我也使用其他脚本语言。bash脚本有它们的位置,我喜欢对它们进行编码。

EN

回答 2

Unix & Linux用户

发布于 2020-06-20 21:37:42

是否有一种方法(如脚本顶部的set标志)使所有变量默认为只读和/或本地-r?

否,除非您包括编辑bash的源代码。

但是,您可以声明别名,以便减少设置变量只读所需的语义糖。

例如,

代码语言:javascript
复制
#!/bin/bash
#
shopt -s expand_aliases
alias lr='local -r'

demo() {
    lr a=123
    echo "$a"
    ((a++))      # Correctly fails with "a: readonly variable"
}

demo
票数 1
EN

Unix & Linux用户

发布于 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

不知道这是不是你想要的,但我认为这和你和巴什的关系一样好

票数 -2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/355725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档