代码之家  ›  专栏  ›  技术社区  ›  Daniil

bash if条件

  •  2
  • Daniil  · 技术社区  · 14 年前

    我以前问过一个问题。答案是有道理的,但我永远无法使它起作用。现在我要开始工作了。但我不知道巴什的if语句。下面我做错了什么?

    START_TIME=9
    STOP_TIME=17
    HOUR=$((`date +"%k"`))
    if [[ "$HOUR" -ge "9" ]] && [[ "$HOUR" -le "17" ]] && [[ "$2" != "-force" ]] ; then
        echo "Cannot run this script without -force at this time"
        exit 1
    fi
    

    我不希望这个脚本在上午9点到下午5点的时间内继续执行,除非强制执行。但它总是将条件评估为true,因此不允许我运行脚本。

    /script.sh[操作](-force)

    谢谢

    编辑:集合-X的输出:

    $ ./test2.sh restart
    + START_TIME=9
    + STOP_TIME=17
    ++ date +%k
    + HOUR=11
    + [[ 11 -ge 9 ]]
    + [[ 11 -le 17 ]]
    + [[ '' != \-\f\o\r\c\e ]]
    + echo 'Cannot run this script without -force at this time'
    Cannot run this script without -force at this time
    + exit 1
    

    然后用-力

    $ ./test2.sh restart -force
    + START_TIME=9
    + STOP_TIME=17
    ++ date +%k
    + HOUR=11
    + [[ 11 -ge 9 ]]
    + [[ 11 -le 17 ]]
    + [[ '' != \-\f\o\r\c\e ]]
    + echo 'Cannot run this script without -force at this time'
    Cannot run this script without -force at this time
    + exit 1
    
    2 回复  |  直到 14 年前
        1
  •  0
  •   Dennis Williamson    14 年前
    #!/bin/bash
    START_TIME=9
    STOP_TIME=17
    HOUR=$(date +"%k")
    if (( $HOUR >= $START_TIME && $HOUR <= $STOP_TIME )) && [[ "$2" != "-force" ]] ; then
        echo "Cannot run this script without -force at this time"
        exit 1
    fi
    
        2
  •  0
  •   Hai Vu    14 年前

    使用 -A 而不是 && :

    if [ $HOUR -ge $START_TIME -a $HOUR -le $STOP_TIME -a "_$2" != "_-force" ]; then
        echo "Cannot run without -force at this hour"
        exit 1
    fi