我在玩Bash变量,错误地使用了-c
选项(用于const
(到declare
,而不是正确的-r
选项来创建readonly
变量。令我惊讶的是,该变量保留了-c
属性,并将我指定的值的第一个字母大写。
declare
的用法中没有列出此行为,无论是在declare --help
输出中还是在Bash的信息页面上。它似乎与ksh的typeset
不兼容,尽管-u
和-l
选项是兼容的。
这是一个众所周知的未记录功能吗?它普遍可用吗?
declare -c
、-l
和-u
似乎已经在bash 4.0中添加在一起(在4.0-rc1中引入(,只要--enable-casemod-attributes
配置标志没有被禁用(默认情况下是启用的(。有针对它们的测试(在tests/casemod.tests
中(。为什么-c
从未被记录下来是个谜。