Не умея заставить операцию И работать в сценарии удара

[116340] Можно использовать [116811]scp[116812] в многословном режиме и получать статистику по времени. Замените строку [116813]scp[116814] следующим образом:
  • Edit: Это может быть неточно до миллисекунды.
  • С помощью питона можно получить точность уровня микросекунды, например.

    1
    11.02.2015, 21:19
    2 ответа

    Вы можете попробовать это, как упоминалось в комментариях, но обратите внимание на пробелы.

    #!/bin/bash
    
    
    if [[ "$1" == "on" && $2 -eq 1 ]]; then
        echo $1 $2
    else
        echo failure
    fi
    
    2
    27.01.2020, 23:17

    Двойные скобки предназначены для числовых операций; Квадратные скобки [] действуют как булевые контексты. Двойные квадратные кронштейны не портативны и будут потерпеть неудачу в Dash и другие очень минимальные оболочки. На самом деле [ [ - это утилита встроенной оболочки / POSIX, которая выполняет логические операции, поэтому вам нужны пробелы вокруг них. Эта ссылка имеет гораздо более подробно на тему, если вам интересно.

    Если бы я написал это, это будет больше похоже на это:

    #!/bin/sh
    
    # check we got the expected number of arguments
    if [ "$#" -ne 2 ]; then
      echo USAGE ...
      exit
    fi
    
    if [ "x$1" = "xon" ] && [ "$2" -eq 1 ]; then
      echo "$1 $2"
    else
      echo failure
    fi
    

    Concatenation «X» - это хорошая практика, чтобы предотвратить рассыпление пустых строк.

    3
    27.01.2020, 23:17

    Теги

    Похожие вопросы