如何在shell脚本中发送当前周

时间:2017-08-02 01:51:44

标签: shell unix

我需要编写一个shell脚本,每周由UNIX发送出去。我不知道如何在脚本中分配变量。以下是我的代码

#!/bin/bash

OUTPUT_SUMMARY="weekly_updates.html"
WEEK_NUMBER = %V
YEAR = %Y
WORK_WEEK = YEAR.WEEK_NUMBER

echo "To:aaa@gmail.com">| $OUTPUT_SUMMARY
date "+Subject:Weekly Update - WW%U %Y">> $OUTPUT_SUMMARY
echo -e "Content-Type:text/html;charset:/"UTF-8/"">> $OUTPUT_SUMMARY
echo "<!doctype html>">> $OUTPUT_SUMMARY
echo "<html>">> $OUTPUT_SUMMARY
echo "<head>">> $OUTPUT_SUMMARY
echo -e "<meta http-equiv="content-type" content="text/html";charset=\"UTF-8\">">> $OUTPUT_SUMMARY
echo "</head>">> $OUTPUT_SUMMARY
echo "<body>">> $OUTPUT_SUMMARY

echo "<pre>">> $OUTPUT_SUMMARY
echo "I am in week $WORK_WEEK" >> $OUTPUT_SUMMARY
echo "</pre>">> $OUTPUT_SUMMARY

代码给出错误,即找不到第4,5,6行命令,这是WEEK_NUMBER,YEAR和WORK_WEEK的声明。如何声明变量,以便我可以在代码中使用它?

2 个答案:

答案 0 :(得分:0)

声明

WEEK_NUMBER = %V

(带空格)将尝试运行WEEK_NUMBER程序,将=%V作为参数传递。

您需要的是上面OUTPUT_SUMMARY行的内容, no 空格的作业:

WEEK_NUMBER=%V

无论如何,只需将WEEK_NUMBER设置为文字%V。由于这些% - 参数适用于date命令,因此您应该使用:

WEEK_NUMBER=$(date +%V)          # Store output of date week-no.
YEAR=$(date +%Y)                 # Store output of date year.
WORK_WEEK=${YEAR}.${WEEK_NUMBER} # Construct from variables.

当然,如果您要使用的事件是WORK_WEEK变量,它可以简化很多,因为date允许您插入任意文本进入其输出:

WORK_WEEK=$(date +%Y.%V)

这也将消除12月31日很晚运行脚本时的潜在错误。在这种情况下,可以在年N中提取周数,在年N+1中提取年份。不太可能,是的,但我很担心这些事情: - )

答案 1 :(得分:0)

只需将代码的第4行替换为: WORK_WEEK = $(日期&#39; +年份:%Y周:%V&#39;)