bash 脚本参数和错误捕获

bash 脚本参数和错误捕获

我已经为 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

抱歉,我不明白“引​​用入站参数”,也不明白为什么需要五个版本的脚本。您已经引用了输入参数,那么问题是什么?

相关内容