Bash脚本K8s端口转发:变量插值时移除回车问题
K8s Pod端口转发脚本的回车符问题解决
问题场景
我不是Bash开发者,写了一个用于K8s Pod端口转发的脚本pf.sh,内容如下:
POD=$(kubectl get pods | awk '{print $1}' | grep -e $1) echo $POD kubectl port-forward $POD 5433:5432
调用示例:
pf.sh some-main-part-of-a-pod-name
执行时遇到问题:第二行echo $POD输出的内容符合预期,但第三行使用变量时报错:
pods "some-main-part-of-a-pod-name-57f485d4f5-fdl4p\r" not found
可以看到变量末尾带有回车符\r,导致kubectl无法找到对应Pod。
补充环境信息:我在Windows笔记本上使用MobaXTerm的Bash环境,kubectl get pods的输出示例如下:
some-main-part-of-a-pod-name-57f485d4f5-fdl4p 2/2 Running 0 2d1h
再次确认:POD变量赋值本身没问题,echo $POD输出正常:
some-main-part-of-a-pod-name-57f485d4f5-fdl4p
解决方法
无需单独定义变量,直接将命令嵌入即可,一行搞定:
kubectl port-forward $(kubectl get pods | awk '{print $1}' | grep -e $1) 5433:5432
内容的提问来源于stack exchange,提问作者nicokruk
相关产品推荐
相关产品推荐

