我正在尝试编写一个shell脚本,该脚本读入存储在目录中的文件名,然后将这些文件与另一个目录进行匹配。如果两者匹配,则会向收件人发送电子邮件。
这是我到目前为止所写的内容
OUTFILES=/remote/output
cd $OUTFILES
for FILE in XML*.email
do
RECIPIENT=`head -1 $FILE`
ATTACHMENT=`head -2 $FILE | tail -1`
echo $RECIPIENT
echo $ATTACHMENT
ATTACHFILES=:/projects/scripts
cd $ATTACHFILES
for FILE in *.pdf do
ATTACH=`ls -1 $FILE`
if [ $ATTACHMENT=$ATTACH ]; then
echo $ATTACH
fi
done
uuencode $ATTACH $ATTACH | mail $RECIPIENT 2>&1
脚本在此行失败
ATTACH=`ls -1 $FILE`
是不是因为我试图在同一个剧本中阅读2 $ FILES
由于
答案 0 :(得分:0)
尝试在等号周围加上空格:
if [ $ATTACHMENT = $ATTACH ]; then
此外,真的应该在使用变量的所有情况下使用双引号:
OUTFILES=/remote/output
cd "$OUTFILES"
for FILE in XML*.email
do
RECIPIENT=`head -1 "$FILE"`
ATTACHMENT=`head -2 "$FILE" | tail -1`
echo "$RECIPIENT"
echo "$ATTACHMENT"
ATTACHFILES=:/projects/scripts
cd "$ATTACHFILES"
for FILE in *.pdf
do
ATTACH=`ls -1 "$FILE"`
if [ "$ATTACHMENT" = "$ATTACH" ]
then
echo $ATTACH
fi
done
done # I inserted this "done" because as indention shows this was missing.
uuencode "$ATTACH" "$ATTACH" | mail "$RECIPIENT" 2>&1