大家好,我正在尝试运行一个带有 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
}