을 통과하는 루프가 있다고 가정해 보겠습니다 read
. 원래 행과 이 행을 다른 변수로 분리하고 싶습니다. 이는 read
훌륭하게 작동합니다. 그러나 변수를 에코 read
하고 에 파이프하여 변수를 채울 수는 없습니다 . 기본적인 사례는 다음과 같습니다.
echo "a b c d e f g" | read line
echo "Read obtained: $line"
결과:
Read obtained:
내가 원하는 대로 읽도록 하려면 어떻게 해야 합니까? 또는: 읽어달라고 요청하는 것이 왜 잘못되었으며 어떻게 해야 합니까?
답변1
read
다음과 같이 파이프에서 무엇을 읽고 있는지 알 수 있습니다 .@yardena의 답변
echo "a b c d e f g" | { read line; echo line=$line; }
답변2
문제는 범위입니다. 변수는 파이프에 의해 생성된 하위 셸 외부에 값이 없습니다. 반대로:
while read line; do echo "read obtained: ${line}"; done < <(echo "a b c d e f g")
필요에 따라 루프를 사용하십시오. 텍스트를 처리하는 데 사용하려면 그렇게 하십시오. -씨