我需要编写一个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的声明。如何声明变量,以便我可以在代码中使用它?
答案 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;)