bash: 여러 명령의 출력을 스크립트로 파이프하지만 조건이 충족될 때만 실행합니다.

bash: 여러 명령의 출력을 스크립트로 파이프하지만 조건이 충족될 때만 실행합니다.

다양한 스크립트에서 계산적으로 복잡한 파일을 생성해야 하는 경우가 많지만 파일이 이미 존재하는 경우 해당 파일을 재사용합니다.

이를 수행하기 위해 재사용 가능한 함수를 어떻게 만들 수 있습니까?

  • 조건 확인(예: 미리 생성된 파일이 존재하고 소스 파일보다 최신인지 여부)
  • 조건이 만족되면 파일 출력
  • 그렇지 않은 경우 제공된 일련의 명령을 실행하여 생성하고 향후 실행에서 재사용할 수 있도록 결과를 파일에 저장합니다.

이상적으로 이 함수를 사용하는 코드는 다음과 같습니다.

if_needs_update_then_generate_into <condition> <generated_filename> \
(
  sequence
  of
  commands
  generating
  the
  file
)

즉, 가독성에 영향을 미치기 때문에 생성을 위해 별도의 함수를 만드는 것을 좋아하지 않습니다.

다음을 시도했지만 CentOS에서는언제나미리 생성된 파일이 이미 존재하고 실제로 재사용되는 경우에도 "긴 명령 시퀀스"에 대해 별도의 프로세스를 만듭니다. 프로세스는 끝나지 않고 계속해서 RAM을 사용합니다.

function if_needs_update_then_generate_into()
{
  condition="$1"
  pregenerated="$2"
  
  if condition; then
    cat |
    tee "$pregenerated"
  else
    cat "$pregenerated"
  fi
}

내가 좋아하는 점은 사용법이 내가 필요한 것과 정확히 똑같다는 것입니다.

if_needs_update_then_generate_into \
  condition \
  pregenerated \
< <(
  sequence
  of
  commands
  generating
  the
  file
)

관련 정보