두 개의 매개변수(비디오 파일 이름 및 이미지)를 사용하고 첫 번째 줄에 부울(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