簡體   English   中英

在 Bash 中將循環中的多個輸出組合成一個帶有逗號的文本文件

[英]Combining multiple outputs from a loop into one text file with commas in Bash

我正在測試一種使用 bash 腳本的運動檢測方法。 我正在運行 ImageMagick 比較命令並將結果輸出到文本文件中。

循環每次運行時都會創建一個輸出。 我希望將每個輸出放入單個文本文件並用逗號分隔。

我目前使用的代碼是:

for (( x=1; x<=$vidLength; x++))
do

#Compare current frame with previous, saving result as "difference-current"png
compare -metric RMSE -fuzz 5% previous-001.png current-001.png difference+%x+.png 2>> motionData.txt    

Done

這段代碼確實繼續將所有數據放入一個文本文件中,但數據顯示在一起,看起來就像一個大數字。

目前數據被放入文本文件,但顯示如下:“4873343460936622743393154537”

當我希望它閱讀時:“4873,343,4609,366,2274,339,315,4537”

你可以這樣做:

for (( x=1; x<=vidLength; x++)) # no need for $ here
do
    #Compare current frame with previous, saving result as "difference-current"png
    compare -metric RMSE -fuzz 5% previous-001.png current-001.png difference+%x+.png 2>> motionData.txt
    if (( x<vidLength )) 
    then 
        printf , >> motionData.txt
    fi
done

printf在循環中compare的每個輸出之間添加一個逗號。 該條件防止在最后一次迭代中添加逗號。

稍微不一樣 :

for (( x=1; x<=$vidLength; x++))
 do
 #Compare current frame with previous, saving result as "difference-   current"png
 compare -metric RMSE -fuzz 5% previous-001.png current-001.png      difference+%x+.png   
   echo ","
 done > motionData.txt  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM