Bash 的 'declare' 的未记录的“-c”选项?
Undocumented '-c' option for Bash's 'declare'?
我在玩 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
从未被记录在案是个谜。
我在玩 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
从未被记录在案是个谜。