1
#!/bin/bash

if [ -z "$1" ]
  then
    echo "No argument supplied"
    exit
fi

if [ "$1"="abc" ] ; then
abc
exit
fi

if [ "$1" = "def" ]; then
def
exit 1
fi

function abc()
{
    echo "hello"
}

function def()
{
    echo "hi"
}

这里 abc 是一个具有局部定义的函数。但是 Bash 给出错误“./xyz.sh: line 10: abc: command not found”。请给我任何解决方案?

4

2 回答 2

2

所有函数都必须在使用前声明,因此将声明移到顶部。

=此外,您需要在字符串比较测试中的任一侧都有一个空格。

以下脚本应该可以工作:

#!/bin/bash

function abc()
{
    echo "hello"
}

function def()
{
    echo "hi"
}

if [ -z "$1" ]
  then
    echo "No argument supplied"
    exit
fi

if [ "$1" = "abc" ] ; then
   abc
   exit
fi

if [ "$1" = "def" ]; then
   def
   exit 1
fi
于 2012-09-28T08:14:23.803 回答
0

我怀疑你的 abc 声明有问题。如果您为您的脚本提供代码,我们将更有能力提供具体的帮助,但这里有一个我认为您正在努力实现的示例。

#!/bin/bash -x

abc(){
  echo "ABC. bam!"
}

foo="bar"
if [ "$foo"="bar" ]; then
  abc
else
 echo "No bar for you"
fi
于 2012-09-28T04:42:59.127 回答