Bash: "bash -c"에서 함수 호출

Bash: "bash -c"에서 함수 호출

내 bash 함수가 bash -c.

현재 스크립트:

#!/bin/bash

inner_function () {
    echo "$1"
    }
outer_function () {
    bash -c "echo one; inner_function 'two'"
    }
outer_function

현재 출력:

$ /tmp/test.sh 
one
bash: inner_function: command not found

원하는 출력:

one

two

답변1

내보내기:

typeset -xf inner_function

예:

#! /bin/bash
inner_function () { echo "$1"; }
outer_function () { bash -c "echo one; inner_function 'two'"; }
typeset -xf inner_function
outer_function

똑같은 내용을 작성하는 다른 방법은 export -f inner_functionor 입니다 declare -fx inner_function.

내보낸 쉘 함수는 다음과 같습니다.ㅏ)bash 전용 기능이며 다른 쉘에서는 지원되지 않습니다.비)대부분의 버그가 수정되었음에도 여전히 논란의 여지가 있음쉘 쇼크.

답변2

여러 스크립트에 동일한 기능이 필요할 때 측면 "라이브러리" 스크립트 파일에 넣고 해당 기능이 필요한 스크립트에 "소스"( source the_lib_script또는 )를 넣습니다.. the_lib_script

관련 정보