我可能有一个bash脚本,这个功能被外包给外壳未设置bash函数变量
function suman{
echo "using suman function"
}
如果我叫
unset suman
事情似乎按预期工作
但是如果我有这个作为我的功能:
function suman-inspect {
echo "using suman-inspect function"
}
那么如果我叫
unset suman-inspect
或
unset "suman-inspect"
我得到这个消息:
bash: unset: `suman-inspect': not a valid identifier
的是怎样才能取消设置这个变量?
+1引人入胜!unset的文档说:“如果没有提供选项,每个*名称*指的是一个变量;如果没有该名称的变量,则任何具有该名称的函数都将被取消设置。“我假设即使变量不是有效的变量名,但显然不是! – ruakh
可能发生的是' unset *假设它的参数(sans'-f')是一个标识符,但如果没有该名称的变量存在,则检查是否打算取消设置函数。只有当你明确地使用'-f'时''bash'放宽“参数必须是一个有效的标识符”规则。很多'bash'扩展缺少精确的文档描述;其他一些例子包括进程替换(例如,'>(...)'从哪里继承它的标准输出*)和函数导出(参见ShellShock)。 – chepner
suman-inspect中的连字符/短划线是否使其成为无效标识符? –