如何在Windows命令行中运行Shell脚本?

时间:2019-01-12 08:04:34

标签: windows shell

我有一个Shell脚本为Kubernetes集群配置容器映像,如何从Windows 10 PowerShell运行Shell脚本?

我有一个Shell脚本为Kubernetes集群配置容器映像,如何从Windows 10 PowerShell运行Shell脚本?我有Docker,并且已经在Windows上安装了Google CloudSDK。

TAG = 2.2

export IMAGE_PROMETHEUS="marketplace.gcr.io/google/prometheus:${TAG}"
export IMAGE_ALERTMANAGER="marketplace.gcr.io/google/prometheus/alertmanager:${TAG}"
export IMAGE_KUBE_STATE_METRICS="marketplace.gcr.io/google/prometheus/kubestatemetrics:${TAG}"
export IMAGE_NODE_EXPORTER="marketplace.gcr.io/google/prometheus/nodeexporter:${TAG}"
export IMAGE_GRAFANA="marketplace.gcr.io/google/prometheus/grafana:${TAG}"
export IMAGE_PROMETHEUS_INIT="marketplace.gcr.io/google/prometheus/debian9:${TAG}"

    for a in "IMAGE_PROMETHEUS" \
             "IMAGE_ALERTMANAGER" \
             "IMAGE_KUBE_STATE_METRICS" \
             "IMAGE_NODE_EXPORTER" \
             "IMAGE_GRAFANA" \
             "IMAGE_PROMETHEUS_INIT"; do
      repo=$(echo ${!i} | cut -d: -f1);
      digest=$(docker pull ${!i} | sed -n -e 's/Digest: //p');
      export $i="$repo@$digest";
      env | grep $i;
    done

1 个答案:

答案 0 :(得分:0)

请注意,标记windowsshell(POSIX shell)是互斥的。您上面发布的内容既不是Windows也不是POSIX Shell,而是bash(或另一个支持可变间接寻址的高级Shell(例如${!i})。

您无法从PowerShell运行脚本。 (它不知道如何解释语法)。唯一的运行方式是在Windows的bash中运行(或更常见的是使用WSL)。

为什么?每种“脚本”语言都需要和口译员。您问题中写的内容似乎是为bash写的,可以调用实用程序sedgrep以及docker pull。检查是否有使用Windows的bash或使用WSL安装的Linux发行版。

cmd.exePowerShell在没有其他软件提供bash解释器的情况下无法解释脚本。