내 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_function
or 입니다 declare -fx inner_function
.
내보낸 쉘 함수는 다음과 같습니다.ㅏ)bash 전용 기능이며 다른 쉘에서는 지원되지 않습니다.비)대부분의 버그가 수정되었음에도 여전히 논란의 여지가 있음쉘 쇼크.
답변2
여러 스크립트에 동일한 기능이 필요할 때 측면 "라이브러리" 스크립트 파일에 넣고 해당 기능이 필요한 스크립트에 "소스"( source the_lib_script
또는 )를 넣습니다.. the_lib_script