/ / Imagemagick bash script funktioniert nicht - bash, imagemagick

Imagemagick bash script funktioniert nicht - bash, imagemagick

#!/bin/bash

dir="/posix/path/to/folder"
cd "$dir"

color1 = "#816c51"
color2 = "#5a4a3b"
color3 = "#1c110f"

for file in *.tiff
do
base=${file%*.tif}
convert -unsharp 5 "$base" "$base.ppm"
convert -opaque white -fill white -fuzz 10% "$base.ppm" "${base}_step1.tif"
convert -fuzz 5% -fill "$color1" -opaque "$color1" "${base}_step1.tif" "${base}_step2.tif"
convert -fuzz 1.5% -fill "$color1" -opaque "$color2" "${base}_step2.tif" "${base}_step3.tif"
convert -fuzz 12% -fill "black" -opaque "$color3" "${base}_step3.tif" "${base}_step4.tif"
convert "${base}_step4.tif" "${base}_final.tif"
done

Ich bekomme ein paar Fehler:

convert: unable to open image ... convert: missing an image filename test.sh: line 6: color1: command not found

Ich würde wirklich etwas Hilfe schätzen! Danke!

Antworten:

2 für die Antwort № 1

Ich bin ein wenig unklar, was dies zu tun versucht (ich habe nicht viel Erfahrung mit ImageMagick), aber von einem Bash-Standpunkt kann ich Ihnen sagen, dass dieses Bit:

for file in *.tiff
do
base=${file%*.tif}

macht keinen Sinn: Es versucht, ein Finale abzuziehen .tif (ein F) von einem Dateinamen, der in endet .tiff (zwei F "s). Vermutlich meintest du das entweder:

for file in *.tiff
do
base="${file%.tiff}"

(Das streift das Finale ab .tiff) oder dieses:

for file in *.tif
do
base="${file%.tif}"

(die Dateien findet, die enden in .tif); oder vielleicht das:

for file in *.tiff *.tif
do
base="${file%.tiff}"
base="${base%.tif}"

(die beide Fälle behandelt).

Wahrscheinlich möchten Sie auch explizit nach dem Fall suchen "$base" ist "*" (was zum Beispiel passieren wird, wenn Sie versuchen zu verwenden *.tif in einem Verzeichnis, das keine mit diesem Namen übereinstimmenden Dateien enthält.


1 für die Antwort № 2

Ich bin mir nicht ganz sicher, ob ich vollständig helfen kann, weil das volle Ausmaß des Problems nicht relevant ist, aber ich sehe, dass Sie es getan haben..tiff "(mit zwei f) und dann später alles andere".tif "(mit einem f). Vielleicht kann es deshalb die Dateinamen nicht finden.

Entferne auch die Leerzeichen in color1 = "blah" (z. B. color1 = "blah") und diese Zeile wird funktionieren.