2012-07-20 99 views
4

我有一個豬腳本,在開始時我想從某個日期(後來用於檢索那些日子的日誌文件)過去7天內生成一個日期字符串。 我嘗試與這條線做到這一點: %聲明CMD7 input= ; for i in {1..6}; do d=$(date -d "$DATE -i days" "+%Y-%m-%d"); input="\$input\$d,"; done; echo \$input在豬腳本中執行shell命令時出錯

我得到一個錯誤: 「ERROR 2999:意外內部錯誤錯誤執行的外殼命令:輸入=;對於i在{1..6}。 ; do d = $(date -d「2012-07-10 -i days」「+%Y-%m-%d」); input =「$ input $ d」,done ;.退出代碼127「
但是shell命令在豬以外運行得非常好。我真的不確定這裏發生了什麼問題。

謝謝!

回答

6

我已經有了一個可行的解決方案,但並不像您想要的那樣精簡,基本上我沒有設法讓Pig在聲明中執行復雜的shell語句。

我第一次寫一個shell腳本(我們稱之爲6-days-back-from.sh):

#!/bin/bash 
DATE=$1 
for i in {1..6}; do d=$(date -d "$DATE -$i days" +%F) ; echo -n "$d "; done 

然後豬腳本如下(我們稱之爲days.pig):

%declare my_date `./6-days-back-from.sh $DATE` 
A = LOAD 'dual' USING PigStorage(); 
B = FOREACH A GENERATE '$my_date'; 
DUMP B 

注意是包含文本的單行文本文件的目錄,用於顯示的目的,我們的變量

我叫腳本遵循:

pig -x local -param DATE="2012-08-03" days.pig 

,並得到了以下的輸出:

({(2012-08-02),(2012-08-01),(2012-07-31),(2012-07-30),(2012-07-29),(2012-07-28)}) 
相關問題