각 루프 반복에 대한 로그 파일을 생성하시겠습니까(bash)?

각 루프 반복에 대한 로그 파일을 생성하시겠습니까(bash)?

터미널에 일련의 디렉터리를 생성하고 일련의 작업을 수행하는 루프가 있으며 각 명령 시리즈에 대한 명령이 새 디렉터리의 로그 파일에 기록되기를 원한다고 가정해 보겠습니다. 이는 몇 가지 방법(echo 사용/python 사용)으로 달성할 수 있지만 알고 싶습니다.루프에서 실행되는 명령의 새 디렉터리에 로그 파일을 자동으로 생성하는 명령을 루프 앞에 쉽게 전달할 수 있는 쉬운 방법이 있습니까? 편집: 여기서 로그 파일이란 터미널에 전달된 최종 명령만 수집한다는 의미입니다.

이렇게 하는 동기 중 하나는 변수 값을 할당한 다음 이를 에코하는 대신 명령에 전달된 매개 변수의 변동을 무작위로 생성하고 "로깅을 위해 이 루프에서 다음 명령을 표시"하는 것과 같다는 것입니다. 어떤 종류의 "log" 명령이 있는지 아는 것은 다른 많은 상황에서 도움이 될 것이므로 이 효과에 대한 답변을 선호합니다.

답변1

그룹에서 중요한 명령을 실행하고 그룹에서 출력을 리디렉션합니다.

for dir in dir1 dir2 ...; do
    logfile="$dir"/log.log       # or whatever name you want
    {
         : create a set of directories
         : perform a set of tasks
    } > "$logfile"
done

터미널에서도 출력하려면 리디렉션을 파이프로 변경하세요.tee

    } | tee "$logfile"

관련 정보