2017-08-02 49 views
0

我需要編寫一個shell腳本,每週由UNIX發送出去。我不知道如何在腳本中分配一個變量。下面是我的代碼如何在shell腳本中發送當前周

#!/bin/bash 

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

echo "To:[email protected]">| $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 

代碼給錯誤該行沒有發現這是WEEK_NUMBER,一年WORK_WEEK的聲明4,5,6的命令。如何聲明變量,以便我可以在代碼中使用它?

回答

0

聲明

WEEK_NUMBER = %V 

(含空格)將嘗試運行WEEK_NUMBER程序,通過=%V作爲參數。

你需要的是你有什麼對OUTPUT_SUMMARY線之上,與分配不空間:

WEEK_NUMBER=%V 

在任何情況下,這將只需設置WEEK_NUMBER字面%V。由於這些% -arguments旨在爲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日很晚這也將擺脫潛在的bug。在這種情況下,可以在N年提取一週數,並在年份N+1中提取年份。不可能的,是的,但我付出擔心這樣的事情:-)

+0

感謝@paxdiablo,它的工作原理! – Tim

0

只需更換你的代碼的第四行: WORK_WEEK = $(日期 '+年份:%Y周:%V')