출력 스트림을 가변 스트림으로 변환

출력 스트림을 가변 스트림으로 변환

두 개의 서로 다른 시스템에 대해 두 개의 쿼리가 실행 중입니다. 그들은 각각 한 줄을 반환하며 한 줄로 출력하고 싶습니다.

쿼리 결과가 다음과 유사한 경우:

echo this that and more
echo other great news

다음과 같이 재정렬 및 ​​서식을 지정할 수 있기를 원합니다.

echo other this that great news and more 

한 줄의 출력을 여러 변수에 반영하는 방법을 알아낼 수 있다면 좋을 것입니다. 나는 이것을 작동시켰다:

echo this that and more | while IFS=" ", read a b c
do
  echo a=$a b=$b c=$c
done 

그러나 일단 while 루프를 종료하면 변수 ab와 c는 범위를 벗어나 더 이상 해당 값을 갖지 않습니다.

답변1

그들이 아니라범위를 벗어남, ksh(적어도 AT&T 버전에서는) 두 번 호출 bash되지 않습니다.read

두 번째 시도는 실패하고 루프에서 빠져나오게 됩니다.

그 순간에는 아무것도 읽히지 않았 으므로 reada, b, c를 빈 문자열로 설정합니다.

그냥 해:

echo this that and more | IFS=" " read a b c
echo "a=$a b=$b c=$c"

답변2

a=$(echo this...)
b=$(echo other...)
echo -- "$a $b"

관련 정보