Назад | Перейти на главную страницу

Параметры сценария bash и перехват ошибок

Я создал сценарий bash для задания cron, который я использую для преобразования загруженного файла в несколько форматов, а затем перемещения его в другую папку, где другое задание cron сохранит его и т. Д.

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

Кроме того, если есть способ перехвата ошибок, это тоже будет очень полезно ....

Спасибо, Скотт

Кстати, это ОС Ubuntu 10.04.

Вот с чего я начинаю.

#!/bin/bash

echo "$(date) :: Looking for images convert and copy to ../outbox"

SERVERNUM="$1:-1" # my first attempt at a default value
# folders are 'web-1-photos', web-2-photos, etc.
FILES=/home/tech/web-${SERVERNUM}-photos/inbox
WORK_DIR=/home/tech/web-${SERVERNUM}-photos/outbox

cd $FILES

for currentFile in *;
do
    if [ -e $currentFile ]; then
        echo "     Converting $currentFile ..."
        # get extension; everything after last '.'
        ext=${currentFile##*.}
        basename=`basename "$currentFile"`
        extensionless=`basename $currentFile .$ext`

        # convert according to landscape or portrait
        DIMS=`identify "${currentFile}" | awk '{print $3}'`
        WIDTH=`echo "${DIMS}"| cut -dx -f1`
        HEIGHT=`echo "${DIMS}"| cut -dx -f2`

        if [[ ${WIDTH} -gt ${HEIGHT} ]]; then
            # echo "landscape"
            convert -resize "950" -quality 80 $currentFile "$WORK_DIR/small-$extensionless.jpg"
            convert -resize "181" -quality 60 $currentFile "$WORK_DIR/thumb-$extensionless.jpg"
        else
            # echo "portrait"
            convert -resize "x700" -quality 80 $currentFile "$WORK_DIR/small-$extensionless.jpg"
            convert -resize "x157" -quality 60 $currentFile "$WORK_DIR/thumb-$extensionless.jpg"
        fi

        # move original file to output directory
        mv $currentFile $WORK_DIR/$currentFile
    fi
done

Убедитесь, что "$ 1" определен, иначе прервите выполнение:

test -n "$1" || exit

или отслеживание ошибок после команды cd:

cd "$FILES" || exit

Извините, я не понимаю ни «ссылочные входящие параметры», ни зачем вам понадобятся пять версий скрипта. Вы уже ссылаетесь на входные параметры, так в чем проблема?