명령 출력을 기반으로 Bash 조건부 스크립트를 만드는 방법은 무엇입니까?

명령 출력을 기반으로 Bash 조건부 스크립트를 만드는 방법은 무엇입니까?

두 개의 매개변수(비디오 파일 이름 및 이미지)를 사용하고 첫 번째 줄에 부울(0 또는 1)을 출력하는 Java 프로그램이 있습니다.

java -jar myProgram video1.mp4 image.png
> 0
>some extra information...
>other extra information....going on

이제 bash 스크립트를 사용하여 폴더의 모든 파일(중첩 폴더의 파일 아님)을 반복하고 첫 번째 인수에 전달된 파일 이름으로 프로그램을 실행해야 합니다(비디오 이름은 매번 변경되고 이미지는 고정됨). ), 첫 번째 줄의 출력이 0이면 파일을 에 복사하고 folder0, 출력이 1이면 파일을 에 복사합니다 folder1.

Bash에서 어떻게 이를 달성할 수 있나요?

답변1

조건문을 사용할 때 더 많은 제어가 가능합니다.

for file in *; do
   if [[ -f "$file" ]]; then
      output=$(java -jar myProgram "$file" image.png | head -n 1)
      [[ $output = "0" ]] && cp -- "$file" folder0
      [[ $output = "1" ]] && cp -- "$file" folder1
   fi
done

편집하다:여전히 출력을 보려면 java다음 명령을 사용할 수 있습니다.

output=$(java -jar myProgram "$file" image.png | tee /dev/tty | head -n 1)

답변2

그것은 다음과 같습니다:

for f in source/*
do
    cp "$f" folder$(java -jar myProgram "$f" image.png | head -1)
done

관련 정보