用于 Bash 的“声明”的未记录的“-c”选项?

Men*_*hem 4 bash declare undocumented-behavior

我在玩 Bash 变量并错误地使用-c选项 (for const)declare而不是-r创建readonly变量的正确选项。令我惊讶的是,该变量保留了-c属性并将我分配的任何值的第一个字母大写。

此行为未在declare的用法中列出,无论是在declare --help输出中还是在 Bash 的信息页面上。它似乎与 ksh 不兼容typeset,尽管-u-l选项是兼容的。

这是一个众所周知的未记录功能吗?是否普遍可用?

hob*_*bbs 5

declare -c, -l, 和-u似乎已在 bash 4.0(在 4.0-rc1 中引入)中一起添加,只要--enable-casemod-attributes未禁用配置标志(默认情况下启用)。有针对他们的测试(在tests/casemod.tests)。为什么-c从未被记录下来是个谜。

  • [2009 年 3 月 19 日星期四 09:37:06 -0400,Chet Ramey 写道:“正确。” 我不确定大写功能是否会继续存在。如果它进入下一个版本,我将添加文档。`](https://lists.nongnu.org/archive/html/bug-bash/2009-03/msg00152.html) 看起来他忘记了: (2认同)