コマンド出力に基づいてBash条件付きスクリプトを作成するには?

コマンド出力に基づいてBash条件付きスクリプトを作成するには?

2つのパラメータ(ビデオファイル名と画像)を使用し、最初の行にブール値(0または1)を出力するJavaプログラムがあります。

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

bashスクリプトを使用してフォルダ内のすべてのファイル(ネストされたフォルダのファイルではない)を繰り返し、最初の引数に渡されたファイル名でプログラムを実行する必要があります(ビデオ名は毎回変更され、画像は固定されています)。 )、最初の行の出力が0の場合はファイルをにコピーし、出力がfolder01の場合はファイルをにコピーします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

関連情報