如何使一个函数只读

4

拥有样本函数

function functionName ()
{
    echo "Hello World"
}

如何避免同名函数被后续的函数覆盖?

function functionName ()
{
    echo "this is another function"
}
1个回答

8
您需要使用 -f 选项来使对应的函数变为只读,语法如下:
readonly -f functionName

在此之后,如果您尝试更新该函数,将会触发一个错误:

bash: functionName: readonly function

5
虽然如此,你仍然可以使用unset functionName - choroba
@choroba:是的,你可以这样做。我认为上面的代码只是为了避免意外更新。如果你使用unset,那么你真的想要更新你的函数,我猜。顺便说一下,谢谢提醒。 - Luca Borrione
1
@choroba,使用 Bash 5.0.17 是无法实现的。 - Jakub Nowak
2
@JakubNowak:那可是我在2012年完全不知道的事情;-)感谢您的更新。 - choroba
1
请注意,这是一个“bashism”。它在Busybox Ash和Debian Dash中不起作用。 - bernstein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接