2013-12-10 555 views
0

我想在shell腳本中的代碼。而我試圖將代碼從批處理腳本轉換爲shell腳本,我收到一個錯誤。shell腳本錯誤?

批處理文件代碼

:: Create a file with all latest snapshots 
FOR /F "tokens=5" %%a in (' ec2-describe-snapshots ^|find "SNAPSHOT" ^|sort /+64') do set "var=%%a" 
set "latestdate=%var:~0,10%" 
call ec2-describe-snapshots |find "SNAPSHOT"|sort /+64 |find "%latestdate%">"%EC2_HOME%\Working\SnapshotsLatest_%date-today%.txt" 

CODE IN shell腳本

#Create a file with all latest snapshots 
FOR snapshot_date in $(' ec2-describe-snapshots | grep -i "SNAPSHOT" |sort /+64') do set "var=$snapshot_date" 
set "latestdate=$var:~0,10" 
ec2-describe-snapshots |grep -i "SNAPSHOT" |sort /+64 | grep "$latestdate">"$EC2_HOME%/SnapshotsLatest_$today_date" 

我想根據日期,並保存在最新的創建日期在文件快照快照進行排序。作者

樣本輸出ECE-描述的快照:

`SNAPSHOT  snap-5e20 vol-f660 completed  2013-12-10T08:00:30+0000  100% 109030037527 10  2013-12-10: Daily Backup for i-2111 (VolID:vol-f9a0 InstID:i-2601)` 

它將包含的記錄,像這樣

的snaphsot最新文件應該cointain:

SNAPSHOT snap-cdd617f3 vol-f66409a0 completed 2013-12-04T09:24:50+0000 100% 109030037527 10 2013-12-04: Daily Backup for Sanjay_Test_Machine (VolID:vol-f66409a0 InstID:i-26048111) 
SNAPSHOT snap-c7d617f9 vol-3d335f6b completed 2013-12-04T09:24:54+0000 100% 109030037527 10 2013-12-04: Daily Backup for sachin_test_VPC (VolID:vol-3d335f6b InstID:i-e1c443d6) 

任何建議或鉛認識。

+2

你得到什麼錯誤? Shell區分大小寫,使用'for'而不是'FOR'。 – choroba

+0

描述你想要做什麼並提供輸入數據和期望的輸出。 –

+0

我有一些在亞馬遜拍攝的快照,我想找到在某個日期做出的最新快照,然後將它們存儲在一個文件中。像日期2013-12-10在這個日期做的快照應該存儲在文件中。 snapshotslatest文件的內容應該是'快照\t卡扣c17f3 \t體積-f69a0 \t \t完成2013-12-04T09:24:50 + 0000 \t 100%\t 2013年12月4日:用於Sanjay_Test_Machine每日備份(VolID :體積-f66409a0 InstID:I-26048111) 快照\t卡扣c7d617f9 \t體積-3d335f6b \t \t完成2013-12-04T09:24:54 + 0000 \t 100%\t 2013年12月4日:每日備份對於sacht_VPC(VolID:vol-3db InstID:i-ed6) ' – user3086014

回答

1

它的代碼氣味,你必須運行命令兩次。

目前還不清楚你是否想要在最近一天的生產線。試試這個:

ec2-describe-snapshots | sort -rk 5 | awk ' 
    $1 != "SNAPSHOT" {next} 
    NR == 1 { split($5, a /T/); date = a[1]; } 
    $5 ~ date {print} 
' > "$EC2_HOME/SnapshotsLatest_$today_date" 

如果你只是想今天的快照,更容易

today=$(date +%F) 
ec2-describe-snapshots | sort -rk 5 | awk -v date=$today ' 
    $1 == "SNAPSHOT" && $5 ~ date {print} 
' > "$EC2_HOME/SnapshotsLatest_$today"