问题描述
我在玩Bash变量,错误地将-c
选项(对于const
使用declare
而不是正确的-r
选项来创建{{1 }}变量。令我惊讶的是,该变量保留了readonly
属性,并为我分配的任何值的首字母大写。
在-c
输出中或Bash的信息页面上,declare
的使用中未列出此行为。尽管declare --help
和typeset
选项兼容,但它似乎与ksh的-u
不兼容。
这是众所周知的未记录功能吗?它普遍可用吗?
解决方法
只要在
declare -c
configure标志中, -l
,-u
和--enable-casemod-attributes
似乎在bash 4.0(4.0-rc1中引入)中一起添加未禁用(默认情况下处于启用状态)。有针对它们的测试(在tests/casemod.tests
中)。 -c
从未被记录的原因是一个谜。