2014-09-14 1 views
0

배열의 일련의 값을 반복하고 항목에 명령을 실행하는 쉘 스크립트가 있습니다.쉘 어레이에 항목 수집

오류 코드! = 0을 반환하는 명령의 경우 오류 표시 배열에 추가하여 나중에 표시하려고합니다. 질문을 공식화하는 동안이 알아 낸 이후

답변

2

, 여기 내가 사용하는 코드는 다음과 같습니다

#!/bin/bash -u 

array=(repo1 repo2 repo3) 
errorarray=() 
for i in "${array[@]}"; do 
    cd $i && git pull || errorarray+=($i) 
done 


echo errorarray has ${#errorarray[@]} items 

for e in "${errorarray[@]}"; do 
    echo "$e failed" 
done; 

((${#errorarray[@]} == 0)); 
exit $? 

이 하위 명령 중 하나가 실패한 경우 0이 아닌 값을 반환한다의 추가 혜택이있다.

+1

+1. 마지막 단락을 (적절한 개행과 들여 쓰기를 추가하여) 바꿀 것입니다 :'$ {errorarray [@]} "의 e; echo "$ e failed"; 끝난; (($ {# errorarray [@]} == 0)); exit $?' –

+0

@glennjackman이 업데이트되었습니다. 감사합니다. –

+0

'cd $ i'는 양날 무기입니다. '(cd $ i && git checkout) ||을 사용해야 할 수도 있습니다. errorarray + = ($ i)'. '$ i'를 큰 따옴표로 보는 것을 선호하지만 이름에 공백이 없으면 괜찮을 것입니다. –

관련 문제