고려하다:
$ FILE_NAME=`(cat somefile | head -1)` | tee -a dump.txt
$ echo $FILE_NAME
$
(cat somefile | head -1)
이제 tee..의 출력이 stdin에 도달하지 못하는 이유는 무엇입니까 ?- 출력이 tee에 도달하면 이를 dump.txt 파일 및 표준 출력에 복사할 수 있습니다.
- 변수
$FILE_NAME
도 값을 받지 않습니다.
답변1
당신은 글을 쓰고 싶을 수도 있습니다
FILE_NAME=`(cat somefile | head -1) | tee -a dump.txt`
echo $FILE_NAME
(아니면 head -1 somefile
고양이를 없애세요)
` 이외의 파이프는 논리 오류에 가깝습니다. 이것이 구문 오류라고 생각할 수도 있지만 Bash의 작동 방식은 아니며 예상한 결과를 제공하지 않습니다.
또한 변수 할당 없이 비교:
$ echo hello > somefile
$ `(cat somefile | head -1)` | tee -a dump.txt
bash: hello: command not found
somefile의 첫 번째 줄은 stdout에 반영되지 않지만 명령으로 해석됩니다. 명령을 실행할 수 없으므로 tee는 출력을 얻지 못하고 생성할 파이프가 없기 때문에 실제로 실행되지 않습니다.