Bash

如何根據命令的輸出創建 Bash 條件腳本?

  • December 7, 2017

我有一個 Java 程序,它獲取兩個參數(一個影片文件名和一個圖像)並在第一行輸出一個布爾值(0 或 1):

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

現在使用 bash 腳本,我需要遍歷文件夾中的所有文件(不是嵌套文件夾中的文件),使用傳遞給第一個參數的文件名執行程序(影片名稱每次都會更改,並且圖像是固定的),如果第一行的輸出為 0,將文件複製到 中folder0,如果輸出為 1,則將文件複製到folder1.

我怎樣才能在 bash 中實現這一點?

使用條件語句時,您可以更好地控制:

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)

就像是:

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

引用自:https://unix.stackexchange.com/questions/409326