Мое выражение печатается, но не оценивается

Взгляните на информацию, необходимую для вашего агента забора:# pcs resource describe fence_virt

Не видя системных журналов, я предполагаю, что вам нужно добавить параметр port=в конфигурации вашего устройства STONITH. Это должны быть имена машин с точки зрения гипервизора.

Если это не так,:# grep fence_virt /var/log/messagesдолжен указать вам правильное направление.

Вы также можете добавить ограничения по местоположению, чтобы эти устройства работали на правильном узле; устройство для ограждения nub1 никогда не должно работать на nub1, а устройство для ограждения nub2 никогда не должно работать на nub2.

0
24.09.2019, 22:23
2 ответа

expr является архаичным и в значительной степени устаревшим в наши дни. Он также очень ограничен и неудобен в использовании по сравнению с лучшими альтернативами, такими как:

  1. bash имеет целое число -только арифметику, построенную -в наши дни.

    $ age=20
    $ echo "$((age * 365))"
    7300
    
    $ x=$((age*365))
    $ echo "$x"
    7300
    
  2. используйте bcдля арифметики с плавающей запятой -:

    $ age=20
    $ echo "$age * 365.25" | bc
    7305.00
    

    Или, если вы хотите убрать десятичную дробь:

    $ echo "scale=0; $age * 365.25/1" | bc
    7305
    

    Деление на 1 необходимо, поскольку сложение, вычитание и умножение игнорируют настройку scaleв bc. Это давняя -проблема, которая вряд ли будет «исправлена».

  3. если вы предпочитаете RPN, вы можете использоватьdc:

    $ age=20
    $ dc -e "$age 365.25 * p" 
    7305.00
    

Примечание. :обратные кавычки устарели и не рекомендуются к использованию. Используйте $(...)вместо обратных кавычек. например.

x=$(echo "$age * 365.25" | bc)

x=$(dc -e "$age 365.25 * p")
2
28.01.2020, 02:22

мы должны избегать специального символа *и оставлять пробелы между значениями и оператором.

Попробуйте,

x=`expr $age \* 365`
1
28.01.2020, 02:22

Теги

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