Bash
如何根據命令的輸出創建 Bash 條件腳本?
我有一個 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