2つのパラメータ(ビデオファイル名と画像)を使用し、最初の行にブール値(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