2015-01-02 47 views
-1

嗨我有一個這樣的日期,我想用bash解析和檢查今天的日期csv文件。Bash幾個,如果

12-Jan-2015 

檢查只有日期和月份做工不錯

DAT=$(date '+%d %b %Y') 
    DAY=${DAT:0:2} 
    MON=$(echo ${DAT:3:3} | awk '{print toupper("$0");}') 
    YEAR=${DAT:6:5} 

    while IFS=",-" read name day month year 
    do 
     day=$(printf "%02d\n" "$day") 
     month=$(echo "$month" | awk '{print toupper($0);}') 
     year=$(printf "%04d\n" "$year") 
      if [ "$day" -eq "$DAY" ] && [ "$month" = "$MON" ]; then 
      echo "$name"; 
      fi 
    done < $SNAPDB > $SNAPTMPDB 

,但是當我嘗試也檢查一年

if [ "$day" -eq "$DAY" ] && [ "$month" = "$MON" ] && [ "$year" -eq "$YEAR" ]; then 

腳本錯誤結束:行119:2015:命令找不到

我現在試了幾篇着作裏ke [[...]] -a等等。但沒有工作。

感謝您的幫助!

回答

0

對'和'使用-a,對'或'使用-o。從文檔:

使用雙括號和括號:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html

從評論更新(在表7-2具體看)

if ([[ "$day" -eq "$DAY" ]] && [[ "$month" = "$MON" ]] && [[ "$year" -eq "$YEAR" ]]); then` 
+0

哇,這是快!如果[「$ day」-eq「$ DAY」] -a [「$ month」=「$ MON」] -a [「$ year」-eq「$ YEAR」],我已經試過了。然後,但不幸的是,這與第118行結束:[:缺少']'線119:2015年:命令沒有找到 –

+0

嘗試使用括號和雙括號...像:'if([[「$ day」-eq「$ DAY」 ]] -a [[「$ month」=「$ MON」]] -a [[「$ year」-eq「$ YEAR」]]);然後'。從理論上講,使用這種語法,你也可以使用&&。我現在無法使用bash shell來嘗試。雙括號是推薦的(非POSIX)語法,用於檢查字符串條件(以及用於數字檢查的雙括號) – Jcl

+0

請檢查這一點:http://mywiki.wooledge.org/BashFAQ/031 – Jcl