Linux

每個新循環都有不同的參數值

  • March 14, 2022

這適用於 webp 使用cwebp,我正在測試所有不同的可能質量,給定:

cwebp -q 75 file.jpeg -o file.webp

我想要一個像這樣的循環:

for i in {1..4}; do cwebp -q ?? file.jpeg -o file.webp; done

在哪裡 ??應該針對特定值進行更改,例如:

  • 第一個循環 75
  • 第二個循環80
  • 第三個循環為 85
  • 第四個循環 90

如何實現自動化,這樣我就不需要輸入 4 次相同的命令並更改哪個時間的參數

  • 我想要一行或一個腳本中的 bash 命令,而不是任何其他程式語言。
  • 我不確定正確的命令是forwhile還是其他

看起來你想要的是這樣的:

for i in 75 80 85 90; do cwebp -q "$i" file.jpeg -o file.webp; done

雖然這每次都會覆蓋輸出文件,但您可能希望在輸出文件名中使用質量:

for i in 75 80 85 90; do cwebp -q "$i" file.jpeg -o file-"$i".webp; done

如果值 75, …, 90 不是任意值,並且您知道將以 Z 為步長從 X 開始並在 Y 結束,則可以使用大括號擴展算術for循環來生成這些值:

for i in {75..90..5}; do cwebp -q "$i" file.jpeg -o file-"$i".webp; done
for ((i = 75; i <= 90; i += 5)); do cwebp -q "$i" file.jpeg -o file-"$i".webp; done

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