2016-06-24 3 views
0

저는 Boxfuse라고하는 유틸리티를 사용하고 있습니다. 변환 명령은 약간의 시간이 소요되며이 처리 과정에서 몇 줄의 출력이 있습니다.Bash에서 명령이 완전히 끝날 때까지 기다리십시오.

아주 마지막 출력의 마지막 단어를 변수에 저장하려고합니다. 이것은 약 절반의 시간 동안 작동합니다. 나머지 절반은 이전 출력 라인 중 하나의 마지막 단어를 실제로 저장합니다. 내 bash는 지금과 같습니다

Boxfuse client v.1.19.12.1000 Copyright 2016 Boxfuse GmbH. All rights reserved. Account: myname (First Last) 
Waiting for AWS to create an AMI for myname/MyApp:1.3.5 in aws-region-1 (this may take up to 50 seconds) ... 
AMI created in 02:51.972s in aws-region-1 -> ami-12345678 

가끔 내 스크립트가 첫 번째 또는 두 번째 줄에서 마지막 단어를 메아리 : 여러 줄에 걸쳐 등 분 이상

BFCONVERT=$(boxfuse convert MyApp:1.3.5) 
AMI=${BFCONVERT##* } 
echo $AMI 

이 명령의 전체 출력, 바로 마지막 단어가 아니라 명령이 완료 될 때까지 기다리려면 어떻게해야합니까?

+1

마치 'boxfuse'가 출력 결과를 표준 오류에 기록하거나 실제로 출력을 생성하는 하위 프로세스를 포킹 한 후에 종료하는 것처럼 들립니다. – chepner

+0

위의 시나리오에 해당하지 않습니다. –

+0

@AxelFontaine 명령이 마지막 두 줄을 반환하지 않을 수도 있습니까? 내가 그것을 실행하는 시간의 절반 정도가 첫 번째 줄에서 마지막 이름을 추가 출력없이 마지막 단어로 사용하는 것 같습니다. –

답변

0

작동하는 경우 사용해보십시오.

lastline=`echo $BFCONVERT | tail -1` 
AMI=${lastline##* } 
echo $AMI 
+0

"Last"와 같은 결과를 얻는 경우가 종종 있습니다. " –

+0

프로그램 실행 후 바로 위의 명령을 실행하는 것은 어떻습니까? 수면 1m; –

+0

이것은 성공적인 응답이 반환 될 때까지이 문제를 해결하지 못하거나 루핑을하지 않는 것 같습니다. –

관련 문제