无文件记录'-c';Bash'的选项;s';声明';?
我在玩Bash变量,错误地使用无文件记录'-c';Bash'的选项;s';声明';?,bash,declare,undocumented-behavior,Bash,Declare,Undocumented Behavior,我在玩Bash变量,错误地使用-c选项(用于const)来声明,而不是正确的-r选项来创建只读变量。令我惊讶的是,变量保留了-c属性,并将我指定的任何值的第一个字母大写 此行为未在declare的用法中列出,无论是在declare--help输出中还是在Bash的信息页面中。虽然-u和-l选项是兼容的,但它似乎与ksh的排版不兼容 这是一个众所周知的未记录功能吗?它是否普遍可用?声明-c、-l和-u似乎是在bash 4.0(在4.0-rc1中引入)中一起添加的,只要--enable casemo
-c
选项(用于const
)来声明,而不是正确的-r
选项来创建只读变量。令我惊讶的是,变量保留了-c
属性,并将我指定的任何值的第一个字母大写
此行为未在declare
的用法中列出,无论是在declare--help
输出中还是在Bash的信息页面中。虽然-u
和-l
选项是兼容的,但它似乎与ksh的排版不兼容
这是一个众所周知的未记录功能吗?它是否普遍可用?声明-c
、-l
和-u
似乎是在bash 4.0(在4.0-rc1中引入)中一起添加的,只要--enable casemod attributes
配置标志未被禁用(默认情况下已启用)。有针对它们的测试(在测试/casemod.tests
中)。为什么-c
从未被记录下来是一个谜。这让我想起了未记录的切换大小写扩展:${foo~}
切换$foo
的第一个字符,而${foo~}
切换所有字符。参见相关内容,2010年2月12日星期五09:10:07+0100,Mikael Fridh写道:@LéaGris听起来像是有人应该在那里提交一个新的bug,“declare-c仍然没有文档记录”:@hobbs你在这里:在写这个问题时,我翻遍了Bash的源代码,发现了几乎相同的东西。然而,搜索谷歌没有结果。我希望下一个搜索的人会发现这个答案并发现它有用。看起来他好像忘了:@LéaGris啊哈!很好的侦查工作。@LéaGris,现在看来他可能会摆脱它(但是,不错的侦查。