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