每个新循环都有不同的参数值

每个新循环都有不同的参数值

这是针对 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还是另一个

答案1

看起来你想要的是这样的:

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

答案2

您也可以尝试使用seq

for i in $(seq 75 90 5); do cwebp -q "$i" file.jpeg -o file-"$i".webp; done

相关内容