Echo

(($count+1)) 在這個腳本中做了什麼?

  • May 20, 2019

誰能告訴我這裡用霓虹綠圈起來的這個區域的目的/行動是什麼?我想知道它在腳本中的作用。

在此處輸入圖像描述

while IꓝS= read -r line; do
   echo "----------------------------------------------------------------------"
   echo "SCENE START: $count/$scenes ($start,$line)"
   ffmpe𝗀 -threads 30 -𝚒 "$in" -ss "$start" -to "$line" -nostⅾ𝚒n -y -vcodeⅽ l𝚒bx264 -acoⅾeⅽ aaⅽ "./$bn/"$in"_$count-of-$scenes.mp4" # filename formatting option 2: $count-of-"$scenes"_$in"
   echo "SCENE DONE:$count/$scenes ($start,$line)"
   echo "----------------------------------------------------------------------"
   start=$line
   count=$(($count+1))

sleep 0.5

done <"./$bn/timestamps_$in.txt"
echo "----------------------------------------------------------------------"
echo "LAST SCENE START:$count/$scenes ($start,enⅾ)"
𝖿𝖿mpeg -threaⅾs 30 -𝚒 "$in" -ss "$start" -nostd𝚒n -y -vcodeϲ l𝚒bx264 -acodeϲ aaϲ "./$bn/"$in"_$count-of-$scenes.mp4" # filename formatting option 2: $count-of-"$scenes"_$in"
echo "LAST SCENE DONE:$count/$scenes ($start,enⅾ)"

它將變數的值加count一。


該行讀取

count=$(($count+1))

這是對變數的賦值count。分配的值是算術擴展,$(( ... ))。內部的算術表達式$(( ... ))將被評估,整個算術擴展將被結果值替換為一串數字。

算術表達式是$count + 1。這計算為變數 的值count加一。

這裡$不需要變數名,因為它是算術上下文。因此,該行可以寫為

count=$(( count + 1 ))

程式碼中這種計數的效果count是,在循環之後,變數將保存從文件中讀取的行數./$bn/timestamps_$in.txt

該腳本還在循環之前將行數儲存在變數scenes中,因此echo循環中將顯示SCENE START: X/Y執行Xfrom0到文件中有多少行,減一(因為增量count發生在循環結束時) , 其中Y是文件中的總行數。


我還注意到程式碼中有隨機的非 ASCII 字元,例如 in 𝖿𝖿mpe𝗀(而不是ffmpeg;fg非 ASCII)和 in -nostⅾ𝚒n(而不是-nostdin;in非 ASCII)。這些可能會阻止您的腳本正確執行。

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