#if-statement #nant #type-conversion
#оператор if #nant #преобразование типа
Вопрос:
<if test="${deployErrors} amp;> 0">
<fail message="MSDeploy failed" />
</if>
${deployErrors}
заполняется из группы захвата регулярных выражений и имеет либо числовое значение, либо пустую строку. Как я могу проверить, больше ли это значение 0 в блоке NAnt if? Вот ошибка, которую я получаю, если ошибки развертывания содержат ‘1’
‘1 > 0’ не является допустимым значением для атрибута ‘test’ of . Не удается преобразовать ‘1 > 0’ в логическое значение. Строка не была распознана как допустимое логическое значение.
Ответ №1:
Я не пробовал это, но я думаю, вам нужно все ваше выражение в фигурных скобках:
<if test="${deployErrors > 0}">
Смотрите также второй пример на странице документации.
Обновление из OP:
Это сработало:
<if test="${deployErrors != ''}">
Комментарии:
1. Спасибо, это навело меня на правильный путь. Я не смог бы их сравнить, потому что ошибки развертывания преобразовались бы в число. Однако сравнение его с » работает.
Ответ №2:
Если вам нужно что-то сделать с фактическим числовым значением, вы могли бы сделать что-то вроде этого:
<if test="${int::parse('0' deployErrors) > 10}">
Ответ №3:
Аналогично ответу Тристана — для преобразования строки в bool, для строки, например true
, false
<if test="${bool::parse(isEnabled)}">
Из http://nant.sourceforge.net/release/0.85/help/functions/bool.parse.html