인라인 텍스트를 얻는 방법

인라인 텍스트를 얻는 방법

사람들이 단일 터미널에서 사용할 수 있도록 온라인 튜토리얼을 만들 때 때로는 코드를 인라인으로 가져오는 것이 가장 좋지만... 어느 것도 예상대로 작동하지 않았습니다. 나는 foo이 모든 것을 위한 '바'가 되고 싶다. 이유를 아는 사람 있나요?

#!/usr/bin/env bash

source <(echo "export foo=bar");
echo "$foo"

source <(cat <<< "export foo=bar");
echo "$foo"

source <(cat <<EOF
  export foo=bar

EOF
);


echo "$foo"

내 유일한 추측은 source파일 설명자에서 읽을 수 없다는 것입니다. 나는 또한 같은 것을 .대신 사용해 보았습니다.source

저는 MacOS를 사용하고 있으며 bash --version결과는 다음과 같습니다.

GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin18) 
Copyright (C) 2007 Free Software Foundation, Inc.

답변1

이는 버전 4.0 이전 버전에서는 작동하지 않습니다 bash(예: bashmacOS의 기본 버전은 버전 3.2.57(1)입니다).

버전 4.0에는 버그 수정이 있습니다:

"."이 비표준 파일(예: 장치 또는 명명된 파이프)에서 명령을 읽고 실행할 수 없는 버그를 수정했습니다.

(그 말은https://tiswww.case.edu/php/chet/bash/CHANGES)

source프로세스 교체와 함께 이것을 사용하면 (또는) 읽은 파일이 .일반 파일이 아니므로 버전 4.0에서 수정된 버그가 발생합니다.

현재 최신 버전은 5.0.7(1)이며 코드가 예상대로 작동합니다.

관련 정보