매우 기본적인 Bash 스크립트를 살펴보십시오.
#!/bin/bash
while read l
do
echo $l
echo "next one"
done <<< $(ps aux)
내 컴퓨터에 여러 프로세스가 있고 ps aux
명령이 터미널에서 제대로 실행됩니다.
나는 단지 얻는다하나루프 내의 반복과 ps
명령 출력은 같은 줄에 제공됩니다. 예상대로 작동하지 않는 이유는 무엇입니까?
답변1
bash
< 버전 에서는 4.4-beta
큰따옴표를 추가해야 합니다.
#!/bin/bash
while read l
do
echo $l
echo "next one"
done <<< "$(ps aux)"
바라보다:
- 명령 대체를 사용할 때 개행 문자가 손실되는 이유는 무엇입니까?
- 여기 문자열이 분할됩니까?
문서에서 계속해서 말하듯이 Bash는 더 이상 여기에서 문자열 확장을 분할하지 않습니다.
일반적으로 프로세스 대체를 사용하는 것이 더 좋다고 생각합니다.
#!/bin/bash
while read l
do
echo $l
echo "next one"
done < <(ps aux)
(문제를 피하기 위해,당신은 사용하고 싶을 수도 있습니다IFS=
).
또는 더 나은 방법은 awk
.
ps aux | awk '{print $0; print "next one"}'