Я создал сценарий 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
Извините, я не понимаю ни «ссылочные входящие параметры», ни зачем вам понадобятся пять версий скрипта. Вы уже ссылаетесь на входные параметры, так в чем проблема?