синтаксический анализ командной строки bash переведен на powershell - PullRequest
3 голосов
/ 17 января 2020

Я не знаю bash все это хорошо, но я унаследовал скрипт, который мне нужно перевести на powershell. Как go об этом?

# parse command line arguments
while [[ $# -gt 0 ]]; do
    key="$1"

    case $key in  
        # one of: "one", "two", "three", "four"
        -s|--system)
            system="$2"
            shift # past argument
            shift # past value
            ;;
        *)  # unknown option
            shift # past argument
            ;;
    esac
done

1 Ответ

3 голосов
/ 17 января 2020

Вы захотите взглянуть на Расширенные параметры PowerShell .

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

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


Для простоты, вот как вы могли бы определить выше код с использованием расширенных параметров, как написано выше:

Param(
  [string]$System
)

Это создаст параметр System с типом String и будет вызываться так:

Function-OrScript -System server01

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

Param(
  [string]$Server,
  [string]$Build
)

Вы можете расширить это, чтобы использовать несколько систем в одном параметре, указав при желании тип строкового массива:

Param(
  [string[]]$System
)

Который будет вызываться как таковой (вы также можете просто включить одно значение, и оно все равно будет работать):

Function-OrScript -System server01, server02, server0X
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...