画像のバッチ操作用の新しい単純なbashスクリプトを作成しようとしています。いくつかの画像が必要です。この場合、画像は2Mbより大きく、幅は2000pxより大きい。しかし、私のスクリプトがうまくいかないようです。さまざまなバリエーションを試しましたが、常にエラーが発生します。10行目でコマンドが見つかりません。。
私の問題は、if条件と文字列を整数に変換することにあると思います。
各画像のパラメータを取得するために認識(ImageMagickパッケージ)を使用しています。
¿私は何が間違っていますか?
#!/bin/bash
for d in */* ; do
WIDTH="$(identify -format '%w' "$d")"
WIDTH_LIMIT=$(($WIDTH+0))
DATA="$(identify -format '%b' "$d")"
SIZE=${DATA::-1}
SIZE_LIMIT=$(($SIZE+0))
if ["$WIDTH_LIMIT" -ge 2000] || ["$SIZE_LIMIT" -gt 2097152]
then
echo width in px: "$(($WIDTH+0))"px .. Size in bytes: "$(($SIZE+0))" bytes
fi
done
答え1
[
バイナリ関数またはbash統合関数です。
if
実行を待っている間、0または1の内容が返されます。あなたの場合、シェルは引数を区切るためにスペースを使用し、正しいバイナリまたはbashコマンドではないので、引数を使用して
プログラムを実行しようとしています。したがって、通常のコマンドなので、常に前後にスペースを追加する必要があります。コマンドとして認識しないと、シェルに入力することはできません。マニュアルページがあるので構文を覚えやすくなることに気づきました。一度試してみると、これは単に実行可能または組み込みのシェルコマンド(Unix / Linuxの好みによって異なります)であり、通常の引数の後にスペースが必要です。["$WIDTH_LIMIT"
-ge
2000]
["$WIDTH_LIMIT"
[
]
echo$UTY
PATH
[
man [