Программирование сценариев оболочки для gimp

Я хочу запустить эту пакетную команду gimp на терминале

gimp -i -b '(batch-despeckle "check.jpg" "out.jpg" 10 3 -1 255)' -b '(gimp-quit 0)'

Я написал для этого сценарий оболочки, чтобы я мог повторно использовать команду с другими параметрами.

#!/bin/bash
filename_src=$1
filename_dest=$2
radius=$3
type=$4
black=$5
white=$6
gimp -i -b '(batch-despeckle \"$filename_src\" \"$filename_dest\" $radius $type $black $white)' -b '(gimp-quit 0)'

Я вызываю этот скрипт с помощью команды

./gimp_despeckle check.jpg out.jpg 10 3 -1 255

Когда я запускаю команду напрямую, она работает, но когда я запускаю сценарий оболочки, происходит сбой. Это сбивает меня с толку. Есть идеи.


person Prarobo    schedule 18.02.2013    source источник
comment
Какова цель этого фрагмента?   -  person Gilles Quenot    schedule 19.02.2013
comment
Быстрый способ отладки пакетных команд с параметрами — поместить эхо в начало команды (echo gimp -i -b ...). Это отобразит результирующую команду без ее запуска (полезно, если вы не уверены, правильно ли отформатирована команда).`   -  person Matt Coughlin    schedule 19.02.2013
comment
Да, или используйте #!/bin/bash -x   -  person Gilles Quenot    schedule 19.02.2013


Ответы (1)


В оболочке вы не можете заключать строку с переменными в одинарные кавычки: переменная не будет интерполироваться, поэтому:

#!/bin/bash
filename_src="$1"
filename_dest="$2"
radius="$3"
type="$4"
black="$5"
white="$6"
gimp -i -b "(batch-despeckle \"$filename_src\" \"$filename_dest\" $radius $type $black $white)" -b '(gimp-quit 0)'

Узнайте разницу между цитатами. См. http://mywiki.wooledge.org/Quotes и http://wiki.bash-hackers.org/syntax/words

person Gilles Quenot    schedule 18.02.2013