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:行10:abc:コマンドが見つかりません」というエラーを出します。解決策を教えてください。

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 に答える