如何从 shell 脚本中调用一个函数?

如何从 shell 脚本中调用一个函数?

大家好,我正在尝试运行一个带有 case 语句的 shell 脚本

opt=$1
case $opt
in
    u) function1 ;;
    g) function2 ;;
    *) exit ;;
esac

function1()
{
    xyz commands
}

funciton2t()
{
    xyz commands
}

我收到以下错误:

function1: command not found

答案1

当你调用一个函数时,它应该被定义和知道,当你function1像这样调用它时:

u) function1 ;;

解释器不知道这个函数在哪里,因为它还没有看到它;所以把你的函数放在句子上方case

这样就可以解决这个问题。

答案2

@kashyap(和其他人)。我不清楚您是否有足够的响应来解决您的问题?
我稍微修改了您的代码,以真正了解正在发生的事情:

function1()
{
    echo "I am function 1"
}

function2()
{
    echo "I am function 2"
}

opt=$1
case $opt
in
    u) function1 ;;
    g) function2 ;;
    *) echo "Nothing to do"
       exit ;;
esac

我将文件命名为dummy函数,给它 x 位,这些是结果。

$ ./dummyFunc u
I am function 1
$ ./dummyFunc g
I am function 2
$ ./dummyFunc 
Nothing to do
$

我希望这有帮助 卡西亚普?
如果没有,请向我们展示您的脚本现在的样子并添加它生成的输出。

答案3

您有 2 个语法错误:
t 之前的 i 和 2 后面的 at:

funciton2t()
{
xyz commands
}

相关内容