各新しいループには異なるパラメータ値があります。

各新しいループには異なるパラメータ値があります。

これは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
  • 2回目のサイクル80
  • 3ラウンド85
  • 第4ラップ90

同じコマンドを4回入力し、毎回パラメータを変更する必要がないように自動化するにはどうすればよいですか?

  • 他のプログラミング言語ではなく、1行またはスクリプトでbashコマンドをしたいです。
  • for正しいコマンドがあるのか​​、それともwhile別のコマンドなのかわかりません。

答え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

関連情報