如果在bash中声明,则调用本地函数

时间:2012-09-28 04:01:53

标签: bash shell

#!/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”。请给我任何解决方案?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

#!/bin/bash -x

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

foo="bar"
if [ "$foo"="bar" ]; then
  abc
else
 echo "No bar for you"
fi