Bash 几个,如果

Bash several and in if

你好,我有一个包含这样日期的 csv 文件,我想用 bash 解析它并检查今天的日期。

12-Jan-2015

只检查日期和月份效果很好

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

  while IFS=",-" read name day month year
    do
        day=$(printf "%02d\n" "$day")
        month=$(echo "$month" |  awk '{print toupper([=12=]);}')
        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:找不到命令

我现在已经尝试了几种写作方式,例如 [[ … ]] -a 等等。但没有任何效果。

感谢帮助!

对 'and' 使用 -a,对 'or' 使用 -o。来自文档:http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html(具体看Table 7-2)

根据评论更新

使用双括号和圆括号:

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