如何让Windows中的curl使用变量作为路径的一部分

问题描述 投票:0回答:1

我正在做使用 kubernetes 的教程(kubernetes.io 中的教程之一),它告诉你使用:

export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}')

我必须删除“导出”才能在 Windows 中工作(由于某种原因还必须删除换行符,但之后它就起作用了),所以命令是:

$POD_NAME=$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{end}}')

它起作用了,如果我输入:

$POD_NAME

我得到了正确的 Pod 名称。

问题来自我必须使用的下一步:

curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME:8080/proxy/

这里无法解析 url,而如果我只是将 $POD_NAME 替换为变量中的文本,则效果很好。

我想知道是否有办法让它工作(例如在解释命令时用变量名替换它的内容)。

不确定是否有帮助,但这是错误消息:

curl : { "kind": "Status", "apiVersion": "v1", "metadata": {}, "status": "Failure", "message": "pods \"proxy\" not found", "reason": "NotFound", "details": { "name": "proxy",  "kind": "pods" }, "code": 404 }  
En línea: 1 Carácter: 1  
+ curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME:8 ...  
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException  
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
windows kubernetes curl
1个回答
0
投票

0 我正在做使用 kubernetes 的教程(kubernetes.io 中的教程之一),它告诉您使用:export POD_NAME=$(kubectl get pods -o go-template --template '{{range .items} }{{.元数据.名称}}{{" “}}{{end}}')我必须删除“导出”才能在 Windows 中工作(由于某种原因还必须删除换行符,但之后它就起作用了),所以命令是: $POD_NAME =$(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{end}}') 它有效,如果我输入: $POD_NAME 我得到了正确的吊舱问题来自于我必须使用的下一步:curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME:8080/proxy/ 在这里,它无法解析 url ,而如果我只是用变量中的文本替换 $POD_NAME ,它就可以正常工作,我想知道是否有办法让它工作(例如在解释变量时用它的内容替换变量名称)。命令)。不确定是否有帮助,但这是错误消息:curl : { "kind": "Status", "apiVersion": "v1", "metadata": {}, "status": "Failure", "message": "pods "proxy" 未找到", "reason": "NotFound", "details": { "name": "proxy", "kind": "pods" }, "code": 404 } 行:1 字符:1 + curl http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME:8 ... + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest],WebException + ExcellentQualifiedErrorId:WebCmdletWebResponseException,Microsoft.PowerShell.Commands。 我明白这里发生了什么。当您在curl命令中使用$POD_NAME时,它不会被它的值替换。这个问题通常是由 shell 处理变量插值的方式引起的。

在您可能正在使用的 PowerShell 中,您需要使用不同的语法进行变量插值。以下是让它发挥作用的方法:

$POD_NAME = $(kubectl get pods -o go-template --template '{{range .items}}{{.metadata.name}}{{end}}') 卷曲“http://localhost:8001/api/v1/namespaces/default/pods/$POD_NAME:8080/proxy/”

© www.soinside.com 2019 - 2024. All rights reserved.