我有一个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
答案 0 :(得分:0)
请注意,标记windows
和shell
(POSIX shell)是互斥的。您上面发布的内容既不是Windows也不是POSIX Shell,而是bash(或另一个支持可变间接寻址的高级Shell(例如${!i}
)。
您无法从PowerShell
运行脚本。 (它不知道如何解释语法)。唯一的运行方式是在Windows的bash中运行(或更常见的是使用WSL)。
为什么?每种“脚本”语言都需要和口译员。您问题中写的内容似乎是为bash写的,可以调用实用程序sed
和grep
以及docker pull
。检查是否有使用Windows的bash或使用WSL安装的Linux发行版。
cmd.exe
或PowerShell
在没有其他软件提供bash解释器的情况下无法解释脚本。