在POSIX兼容的shell脚本中是否允许条件函数定义?

时间:2016-02-24 09:34:39

标签: shell posix

在bash和ksh中,我看到以下脚本运行正常。

if [ -n "foo" ]
then
    foo()
    {
        echo function foo is defined
    }
else
    bar()
    {
        echo function bar is defined
    }
fi

foo
bar

它还会在执行时生成预期的输出。

$ bash scr.sh
function foo is defined
scr.sh: line 15: bar: command not found
$ ksh scr.sh
function foo is defined
scr.sh: line 15: bar: not found

我想知道这个脚本是否会在任何符合POSIX标准的shell上运行并生成此输出。

1 个答案:

答案 0 :(得分:1)

我同意你对语法的阅读。函数定义可能出现在if语句的主体中,使其执行成为条件。