![cut -f [duplicate] 출력 이해](https://rvso.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]= IPAdderess
누군가 요소를 별도로 추출하는 방법을 안내해 줄 수 있습니까? 루프를 실행 $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
) 루프 후에 변수 값에 액세스할 수 있습니다.