다음 명령과 관련하여 :
$ unset a
$ echo 12 | read a
$ echo $a
$
두 번째 명령문에서는 a의 값이 12로 설정될 것으로 예상합니다. 그러나 a 는 아직 설정되지 않은 것으로 나타났습니다.
답변1
Bash에서 프로세스 대체를 사용할 수 있습니다.
read -r a < <(echo 12)
echo "$a"
아니면 here string
bash에서도 가능합니다.
read -r a <<< 12
echo "$a"
대부분의 셸에서 파이프라인의 각 명령은 별도의 SubShell에서 실행됩니다. 바라보다파이프를 통해 데이터를 읽을 수 없는 이유는 무엇입니까?
사용 중인 셸이 프로세스 교체를 지원하지 않는 경우 임시 파일을 사용해야 합니다.here string
echo 12 > tempfile
read -r a < tempfile
echo "$a"
임시파일은 실제 스크립트의 예일 뿐이지만 임시파일은 안전한 방식으로 fifo
사용되고mktemp