2015-07-01 3 views
1

Как я могу запустить «подфункцию» из сценария в командной строке? Пример:Как запустить подфункцию в Bash

#script_1.sh 
main_function() { 
    sub_function() { 
     echo "hello world" 
    } 
} 

Я пытался на этот файл и вызвать функцию из другого сценария:

#script_2.sh 
source script_1.sh 

sub_function 

Но я получаю

script_2.sh: line 3: sub_function: command not found 

в то время как я ожидал, чтобы просто получить hello world.

ответ

5

Таким образом, определено, что sub_function будет определено после вызова function. Итак:

#script_1.sh 
function() { 
    sub_function() { 
     #cmd 
     } 
} 

#script_2.sh 
source script_1.sh 
function 
sub_function 

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

+0

'function' - это ключевое слово, поэтому вам нужно выбрать имя, но в остальном, да. –

+0

Но я предполагаю, что это также выполнит «функцию», которая может делать другие вещи, я ТОЛЬКО хочу выполнить «sub_function». Это возможно? – MrCalvin

4

Стадия отсутствует в вашем вопросе, чтобы вызвать function первое - его действия заключается в определении sub_function.

Отметьте, что sub_function не относится к function в любом случае - его определение является лишь побочным эффектом бега function.

P.S. Я предполагаю, что вы на самом деле не пытаетесь назвать это function - это зарезервированное слово в bash.

Смежные вопросы