셸에서 루프를 피해야 하는 이유는 무엇입니까? [복사]

셸에서 루프를 피해야 하는 이유는 무엇입니까? [복사]

다음 링크는 셸에서 루프를 사용하지 않는 것을 권장합니다.

for 루프 범위 내의 bash 변수

왜 이런거야? 다음은 이 답변을 발견했을 때 우연히 보았던 루프 예제입니다.

find /etc/postinstall -name '*.sh' | while read script
do
  echo Running $script ...
  $script
  mv $script $script.done
done

답변1

쉘 루프가 최선의 접근 방식으로 간주되지 않는 두 가지 애플리케이션 유형을 생각할 수 있습니다. 첫 번째는 데이터 처리입니다. 많은 도구(예: sed, awk, perl등)가 암시적으로 루프를 수행하며 성능이 더 좋습니다. 두 번째는 (예제 코드와 같이) 일부 코드가 파일 세트에 대해 실행되는 경우로, 스위치를 find사용하면 -exec문제와 오버헤드가 덜한 상태에서 명령을 실행할 수 있습니다(셸이기도 함). 더 많은 경우가 있을 수 있지만 언급된 두 가지 사례는 이미 유익할 것입니다. 즉, 쉘 루프는 본질적으로 나쁘지 않습니다. 언급된 두 가지와 같은 다른 옵션을 고려해보세요.

답변2

Shell은 끔찍한 프로그래밍 언어이지만 매우 편리합니다. 나는 많은 쉘 스크립트를 작성하고 때로는 루프를 사용합니다. 실행하는 데 몇 시간이 걸리는 스크립트가 있습니다. 다른 것으로 다시 작성해야 합니다. 쉘 스크립트에 루프가 있는 경우, 완전히 관리할 수 없게 되기 전에 스크립트를 다시 작성하는 것에 대해 생각해 볼 때입니다.

관련 정보