Во время написания bash-скрипта, помогающего создавать миниатюры поляроидов с помощью команды convert
Imagick. Я столкнулся с проблемой. Хотя мне удается обойти это (на самом деле, поскольку convert
достаточно гибок), я все еще хочу знать, как решить эту проблему без такого конкретного обходного пути.
Таким образом, скрипт bash получит значение заголовка, которое может содержать пробел. Я хочу использовать эту подпись в качестве параметра convert
. Если заголовок пустой (''), я не буду использовать опцию '-caption' для команды convert. Как это:
CAPTION="Is this Cute?" # The actual value will be tacked from the parameter of this bash.
IN_FILE="resources/puppy.png"
OUTFILE="resources/puppy_polaroid.png"
# If CAPTION is not empty, reformat CAPTION
if [ "$CAPTION" != "" ]; then CAPTION="-caption \"$CAPTION\""; fi
# otherwise, do not use '-caption' add all
COMMAND="convert $CAPTION \"$IN_FILE\" \"$OUTFILE\""
echo "Command: $COMMAND" #This echo a value command
`$COMMAND`
echo повторяет команду value, которую можно скопировать, можно вставить в терминал и запустить. НО bash не работает. Как я могу это сделать?
ПРИМЕЧАНИЕ: В случае convert
, -caption ""
выполняет работу. Я знаю это и в настоящее время использую это как обходной путь.
Заранее спасибо за помощь.
РЕДАКТИРОВАТЬ: Из ответа вот код, который работает для меня сейчас.
... # Get CAPTION and GRAVITY from parameters
if [ "$CAPTION" != "" ]; then ARGS_CAPTION=(-caption "$CAPTION"); fi
if [ "$GRAVITY" != "" ]; then ARGS_GRAVITY=(-gravity "$GRAVITY"); fi
if [ ! -f "$IN_FILE" ]; then echo "The input file does not exist: '$IN_FILE'"; exit; fi
if [ "$OUTFILE" == "" ]; then OUTFILE=${IN_FILE%.*}-${IN_FILE#*.}-polaroid.png; fi
ARGS=("${ARGS_CAPTION[@]}" -thumbnail 480x480 -border 5x5 -pointsize 60 "${ARGS_GRAVITY[@]}" +polaroid -thumbnail 120x120)
echo convert "${ARGS[@]}" "$IN_FILE" "$OUTFILE";
convert "${ARGS[@]}" "$IN_FILE" "$OUTFILE"
Я надеюсь, что это будет полезно для тех, кто ищет подобное решение.