Если оператор не правильно оценивает - invoke-sqlcmd [duplicate]

Да, есть:

ARRAY=()
ARRAY+=('foo')
ARRAY+=('bar')

Справочное руководство Bash :

В контексте, когда оператор присваивания присваивает значение переменную оболочки или индекс массива (см. раздел «Массивы»), оператор «+ =» может использоваться для добавления или добавления к предыдущему значению переменной.

24
задан Peter Mortensen 13 July 2015 в 21:11
поделиться

2 ответа

Используйте свойство length для типа [String]:

if ($dbUserName.length -gt 8) {
    Write-Output "Please enter more than 8 characters."
    $dbUserName = Read-Host "Re-enter database username"
}

Обратите внимание, что вы должны использовать -gt вместо > в своем if состоянии. PowerShell использует следующие операторы сравнения для сравнения значений и условий тестирования:

  • -eq = равно
  • -ne = не равно
  • -lt = меньше
  • -gt = больше, чем
  • -le = меньше или равно
  • -ge = больше или равно
52
ответ дан Ravi Thapliyal 22 August 2018 в 23:51
поделиться
  • 1
    & GT; является оператором перенаправления. Я подозреваю, что это лучший выбор. – mjolinor 28 April 2013 в 13:10
  • 2
    @mjolinor Да, это правильно. Опасности работы с несколькими языками. :) – Ravi Thapliyal 28 April 2013 в 14:10
  • 3
    Логика этого сообщения все еще испорчена. Если имя пользователя имеет длину более 8 символов, выход: введите более 8 символов? Это должно быть -lt – LPChip 12 June 2017 в 09:56
  • 4
    $ var.length говорит, что моя строка - 1 символ, хотя она фактически около 30. – alexkovelsky 4 May 2018 в 12:32

Вы также можете использовать -match против регулярного выражения. Пример:

if ($dbUserName -match ".{8}" )
{
    Write-Output " Please enter more than 8 characters "
    $dbUserName=read-host " Re-enter database user name"
}

Также, если вы похожи на меня и как ваши фигурные скобки находятся в одной и той же горизонтальной позиции для ваших кодовых блоков, вы можете поместить это на новую строку, поскольку она ожидает код блок будет выглядеть на следующей строке. В некоторых командах, где первая фигурная скобка должна быть в соответствии с вашей командой, вы можете использовать маркер серьезного акцента (`), чтобы сказать powershell для обработки следующей строки как продолжения.

0
ответ дан nothrow 22 August 2018 в 23:51
поделиться
Другие вопросы по тегам:

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