큰 프로젝트를 컴파일하려고하는데, 다른 디렉토리로 이동하여 거기에 컴파일하는 작업이 포함됩니다. 배열이 세 개 있습니다. 모두 명령을 포함하고 있습니다. 첫 번째 배열에는 디렉터리 순회가 포함되고 두 번째 배열에는 컴파일 명령이 포함되며 세 번째 배열에는 오류 메시지가 포함됩니다.배열을 반복하고 변수에 저장된 명령을 실행하십시오.
나는 이제 내가 많은 것들을 시도하고 달성하는 방법을 잘하지 않은 루프에 대한 즉,이
for i in {0..$size_of_array}
do
eval ${task[$i]}
if (eval ${compile[$i]}); then
echo "Done"
else
eval ${error[$i]}
break
fi
done
처럼 작동해야합니다 그래서
task[0]="cd vssl/make/; make clean;"
compile[0]="make all"
error[0]="echo \"We failed at vssl install\""
task[1]="cd ../../web/make/; make clean;"
compile[1]="make install"
error[1]="echo \"We failed at web install\""
처럼 내 배열을 설정 그것. for i in "${task[@]}"
은 세 가지 변수가 있기 때문에 나를 위해 작동하지 않습니다. 누구든지이 문제를 해결하는 방법에 대한 통찰력을 갖고 있습니까?
도움을 주실 수있는 분들께 감사드립니다. :)
정말 고마워요. 제가 원한 것입니다! 완벽하게 작동합니다. 고맙습니다! – Quillion
대안은'for i '$ {! task [@]} "; do ...; done'입니다. – potong
좋은 하나! 이 모든 것은 bash (1)의 "매개 변수 확장"절에서 설명됩니다. –