![cut -f [duplicate] 출력 이해](https://linux55.com/image/164613/cut%20-f%20%5Bduplicate%5D%20%EC%B6%9C%EB%A0%A5%20%EC%9D%B4%ED%95%B4.png)
기다려 주셔서 감사합니다. 저는 Linux를 처음 사용하므로 cut 명령의 출력을 구문 분석하는 방법을 이해하는 데 도움이 필요합니다.
그래서 현재 변수가 있습니다.
x=$(discover nginx --human=nood | cut -f1,6)
그래서 내 출력은 echo "$x
다음과 같은 목록입니다
인스턴스 ID IP 주소
내 프로그램에서 x의 각 행에 대해 for 루프를 실행하고 각각 첫 번째 변수와 두 번째 변수를 추출하고 싶습니다. 예: 배열인 경우 a[0] = 인스턴스 ID 및 a[1] = IPDeress
누군가 요소를 개별적으로 추출하는 방법을 안내해주세요. 루프를 실행 $x
하고 그 안에서 잘라낼 수 있다는 것을 알고 있지만 더 좋은 방법이 있는지 배우고 싶습니다.
답변1
이렇게 하려면 데이터를 변수에 저장할 필요가 전혀 없으며 다음 출력을 반복하면 됩니다 discover
.
discover nginx --human=nood | cut -f 1,6 |
while read -r instanceID IPAddress; do
# Use "$instanceID" and "$IPAddress" here
done
또는 bash
프로세스 대체를 이해하는 쉘에서( <( ... )
):
while read -r instanceID IPAddress; do
# Use "$instanceID" and "$IPAddress" here
done < <( discover nginx --human=nood | cut -f 1,6 )
이 둘의 차이점은 일부 변수의 값을 전달하려는 경우에만 표시됩니다.루프에서 벗어나기. 첫 번째 예에서는 루프가 서브쉘에서 실행되므로 루프 내에 설정된 변수 값을 사용하지 않습니다.뒤쪽에루프(자체 로컬 환경에 존재함)
두 번째 예에서는 관련된 하위 쉘이 없으므로(프로세스 교체를 사용하고 실행하는 하위 쉘 제외 discover
) cut
루프 후에 변수 값에 액세스할 수 있습니다.