【发布时间】:2014-02-17 14:36:30
【问题描述】:
我正在制作一个脚本来删除所有早于一天的打印机作业,并且不必打印早于一天的作业以及已取消的 jobid
以下是我必须遵循的几个条件
我无权访问 cups 目录,我无法创建任何临时文件。 我必须使用 Bash shell。
我尝试使用一个变量,在while循环外声明,但变量值保持不变~知道这是因为子进程 尝试使用导出变量,但在 Bash shell 中也不起作用,在 ksh shell 中也是如此。
我尝试过以下逻辑:
count=0
currDate=`date +%Y%m%d`
lpstat -o|while read line
do
jobid=`echo $line|awk '{print $1}'|cut -d"-" -f2`
jobDate=`echo $line|awk -F ' ' 'BEGIN{OFS="-";} {print $5,$6,$7;}'`
formattedDate=`date -d"${jobDate}" +%Y%m%d`
if [ `expr $currDate - $formattedDate` -gt 1 ]
then
count=`expr $count + 1`
echo " cancelling printer job with jobid $jobid "
cancel $jobid
fi;
done
[ $count -gt 0 ] ; echo "NO of Printer jobs pending more than 1 days are $count";
没有像上面提到的那样处理计数变量的方法不起作用, 导出在 bash shell 中不起作用,不允许创建 tmp 文件。
获得解决方案的任何建议。
【问题讨论】:
-
是否有任何可能的方法来执行命令并在 awk 命令循环中获取结果就像我将从行中获取格式化的日期并尝试在 awk 循环中进行处理
-
不要使用
expr;使用 Bash 内置算术$((…))(和((…)))。