Bash 함수에서 "source" 호출

Bash 함수에서 "source" 호출

표준 입력에서 전달된 파일 이름을 얻으려고 합니다. 내 계획은 다음과 같은 함수를 만드는 것입니다.

mySource() {
    # get stdin and pass it as an argument to `source`
    source $(cat)
}

다음과 같이 호출하세요. $ echo "file1.sh" | mySource위치 는 다음 file1.sh과 같습니다.

FILE=success
export FILE

$FILE초기화가 이라고 가정 hello world하면 을 실행할 때 인쇄할 것으로 $ echo "file1.sh" | mySource예상되지만 대신 ;$ echo $FILEsuccesshello world

함수에서 파일을 가져오는 방법이 있나요?

답변1

기능을 다음과 같이 변경할 수 있습니다 mySource.

mySource() {
  source "$1"
}

그런 다음 다음을 사용하여 호출하세요.

$ mySource file.sh
$ printf '%s\n' "$FILE"
success

mySource여러 파일을 처리할 수도 있습니다 .

mySource() {
  for f do
    source "$f"
  done
}

관련 정보