Выполните процесс условно в Windows PowerShell (например, && и || операторы в Bash)

Я задаюсь вопросом, знает ли кто-либо о способе условно выполнить программу в зависимости от успеха/отказа выхода предыдущей программы. Есть ли какой-либо способ для меня сразу выполнить program2 после program1, если program1 выходит успешно, не тестируя переменную LASTEXITCODE? Я попробовал - полоса и - и операторы напрасно, хотя у меня было чувство, что они не будут работать так или иначе, и лучшая замена является комбинацией точки с запятой и если оператор. Я имею в виду, когда дело доходит до создания пакета несколько автоматически из источника на Linux, && оператор не может быть разбит:

# Configure a package, compile it and install it
./configure && make && sudo make install

PowerShell потребовал бы, чтобы я сделал следующее, предположив, что я мог на самом деле использовать ту же систему сборки в PowerShell:

# Configure a package, compile it and install it
.\configure ; if ($LASTEXITCODE -eq 0) { make ; if ($LASTEXITCODE -eq 0) { sudo make install } }

Несомненно, я мог использовать несколько строк, сохранить его в файле и выполнить сценарий, но идея состоит в том, чтобы это было кратко (сохраните нажатия клавиш). Возможно, это - просто различие между PowerShell и Bash (и даже встроенная командная строка Windows, которая поддерживает && оператор), я должен буду корректироваться к, но если существует более чистый способ сделать это, я хотел бы знать.

7
задан Chris 3 May 2014 в 00:19
поделиться

1 ответ

Вы можете создать функцию для этого, но я не знаю прямого способа сделать это.

function run-conditionally($commands) {
   $ranAll = $false
   foreach($command in $commands) {
      invoke-command $command
      if ($LASTEXITCODE -ne 0) {
          $ranAll = $false
          break; 
      }
      $ranAll = $true
   }

   Write-Host "Finished: $ranAll"

   return $ranAll
}

Затем назовите это аналогично

run-conditionally(@(".\configure","make","sudo make install"))

Вероятно, есть несколько ошибки там это отключено без удобной среды PowerShell.

2
ответ дан 7 December 2019 в 18:43
поделиться
Другие вопросы по тегам:

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