를 사용하여 함수를 "내보내기" export -f
는 함수 본문과 함께 환경 변수 를 만듭니다. 이 예제를 고려하십시오.
$ fn(){ echo \'\"\ \ \$; }
$ export -f fn
$ sh -c printenv\ fn
() { echo \'\"\ \ \$
}
이것은 쉘 (Bash?) 만 기능을 받아 들일 수 있다는 것을 의미합니다. Bash는 함수로 시작하는 envvar 만 고려하므로 함수를 직접 설정할 수도 있습니다 () {
.
$ fn2='() { echo Hi;}' sh -c fn2
Hi
$ fn3='() {' sh -c :
sh: fn3: line 1: syntax error: unexpected end of file
sh: error importing function definition for `fn3'
SSH를 통해이 변수를 "내보내기"해야하는 경우 실제로 문자열로 함수가 필요합니다. 내장 -p
기능 ( -f
)에 대한 인쇄 옵션 ( ) 으로 수행 할 수 있습니다 declare
.
$ declare -pf fn
fn ()
{
echo \'\"\ \ \$
}
SSH를 통해 실행해야하는보다 복잡한 코드가있는 경우 매우 유용합니다. 다음과 같은 가상 스크립트를 고려하십시오.
#!/bin/bash
remote_main() {
local dest="$HOME/destination"
tar xzv -C "$dest"
chgrp -R www-data "$dest"
# Ensure that newly written files have the 'www-data' group too
find "$dest" -type d -exec chmod g+s {} \;
}
tar cz files/ | ssh user@host "$(declare -pf remote_main); remote_main"
#!/bin/sh
에#!/bin/bash
와 후doit() {...}
바로export -f doit