Как вызвать функцию от случая в сценарии оболочки?

Привет все я пытаюсь выполнить сценарий оболочки с оператором выбора

opt=$1
case $opt
in
    u) function1 ;;
    g) function2 ;;
    *) exit ;;
esac

function1()
{
    xyz commands
}

funciton2t()
{
    xyz commands
}

Я получаю следующую ошибку:

function1: command not found
3
задан 25 April 2017 в 15:07

3 ответа

Когда Вы вызываете функцию, она должна быть определена и известна, когда Вы звоните function1 в этом как:

u) function1 ;;

Интерпретатор понятия не имеет, где эта функция, потому что это еще не видело его; так помещает Ваши функции выше case предложение.

, Который устранил бы проблему.

4
ответ дан 1 December 2019 в 15:22

@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

я назвал файл dummyFunc , дал ему x-биты, и это результаты.

$ ./dummyFunc u
I am function 1
$ ./dummyFunc g
I am function 2
$ ./dummyFunc 
Nothing to do
$

я надеюсь, что это помогает kashyap?
В противном случае показывают нам, как Ваш сценарий теперь похож, и добавьте вывод, который он генерирует.

2
ответ дан 1 December 2019 в 15:22

у Вас есть 2 синтаксических ошибки:
я перед t и t позади 2:

funciton2t()
{
xyz commands
}
0
ответ дан 1 December 2019 в 15:22

Другие вопросы по тегам:

Похожие вопросы: