用于在多台打印机中打印的Shell脚本

用于在多台打印机中打印的Shell脚本,shell,Shell,我有一个shell脚本,它检查电子邮件帐户并自动将附件打印到脚本第8行列出的打印机。请您帮助我修改它,以便第8行是一个变量,可以通过在电子邮件正文中插入适当的文本打印机=FOO来设置该变量。这将允许脚本打印到多个打印机 #!/bin/bash #while [ 1 ] while [ 1 ] do SUPPORTED_FILETYPES=".pdf" #LP_OPTIONS="-o media=A4,tray1 -o fit-to-page -o position=top -o scaling=

我有一个shell脚本,它检查电子邮件帐户并自动将附件打印到脚本第8行列出的打印机。请您帮助我修改它,以便第8行是一个变量,可以通过在电子邮件正文中插入适当的文本打印机=FOO来设置该变量。这将允许脚本打印到多个打印机

#!/bin/bash
#while [ 1 ]
while [ 1 ]
do
SUPPORTED_FILETYPES=".pdf"
#LP_OPTIONS="-o media=A4,tray1 -o fit-to-page -o position=top -o scaling=100"
LP_OPTIONS=""
PRINTER="PRT04-3" #line no. 8 

MAILFILE=~/eprint/$(date +%H%M%S).txt

PRINT_FOLDER=~/eprint/printable
/usr/bin/fetchmail --bsmtp $MAILFILE

if [ "$?" = "0" ]; then
   MAIL_ADDRESS=$(grep 'From:' $MAILFILE | sed -n -e 's/^[^<]*<\([^>]*\)>.*$/\1/p')
   /usr/bin/uudeview +e $SUPPORTED_FILETYPES -p $PRINT_FOLDER -i $MAILFILE
   rm $MAILFILE

   PRINTED="no"

   for f in $PRINT_FOLDER/*

   do
      if [ "$f" != "$PRINT_FOLDER/*" ]; then
         LP_OUTPUT=$(lp $LP_OPTIONS "$f" -d $PRINTER)
         if [ "$?" != "0" ]; then
            MAILTEXT="File "$f" could not be printed."
            echo "$MAILTEXT" | mail -s "Print-Error" $MAIL_ADDRESS
         fi
         rm "$f"
         PRINTED="yes"
      else
         if [ "$PRINTED" = "no" ]; then
            echo "No printable Attachments" | mail -s "Print-Error" $MAIL_ADDRESS
         fi
      fi
   done
  # ~/mailprint
fi
sleep 4
done
#/bin/bash
#而[1]
而[1]
做
支持的_FILETYPES=“.pdf”
#LP_OPTIONS=“-o介质=A4,传送带1-o适合页面-o位置=顶部-o缩放=100”
LP_OPTIONS=“”
打印机=“PRT04-3”#第8行
MAILFILE=~/eprint/$(日期+%H%M%S).txt
打印文件夹=~/eprint/printable
/usr/bin/fetchmail--bsmtp$MAILFILE
如果[“$?”=“0”];然后
邮件地址=$(grep'发件人:'$MAILFILE | sed-n-e's/^[^.*$/\1/p')
/usr/bin/uudeview+e$受支持的\u文件类型-p$打印\u文件夹-i$邮件文件
rm$MAILFILE
PRINTED=“否”
对于$PRINT\u文件夹中的f/*
做
如果[“$f”!=“$PRINT_FOLDER/*”];则
LP_输出=$(LP$LP_选项“$f”-d$打印机)
如果[“$?”!=“0”];则
MAILTEXT=“无法打印文件“$f”
回显“$MAILTEXT”|邮件-s“打印错误”$mail\u地址
fi
rm“$f”
PRINTED=“是”
其他的
如果[“$PRINTED”=“no”];则
echo“无可打印附件”| mail-s“打印错误”$mail\u地址
fi
fi
完成
#~/mailprint
fi
睡眠4
完成

如果您将PRINTER=FOO限制为自己的行,这将很容易:

PRINTERLINE=$(grep 'PRINTER=' $MAILFILE)
eval $PRINTERLINE #eval PRINTER=FOO
#$PRINTER equals to FOO now