我已经为 cron 作业创建了一个 bash 脚本,用于将上传的文件转换为几种格式,然后将其移动到另一个文件夹,另一个 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
检查“$1”是否定义,否则中止执行:
test -n "$1" || exit
或在 cd 命令之后进行错误跟踪:
cd "$FILES" || exit
抱歉,我不明白“引用入站参数”,也不明白为什么需要五个版本的脚本。您已经引用了输入参数,那么问题是什么?