我正在尝试从bash脚本读取yaml
文件中的值
这是我的Yaml的样子
apiVersion: v1
data:
consul-write: 100
kind: Secret
我需要获取consul-write
的值。 (在这种情况下为100
)
如何使用bash
此命令输出上述yaml
kubectl get secrets consul-write -n test -o yaml
这是我尝试过的。有人可以帮我吗?
NAMESPACE=$1
TOKEN_NAME=$2
KUBE_GET=$(kubectl get secrets $TOKEN_NAME -n $NAMESPACE -o yaml)
echo $KUBE_GET
答案 0 :(得分:1)
使用awk在匹配TOKEN_NAME的行上选择字段2
kubectl get secrets $TOKEN_NAME -n $NAMESPACE -o yaml | awk -vns=$TOKEN_NAME '$1 ~ ns {print $2}'
编辑:固定变量和多行输出。
答案 1 :(得分:0)
尝试一下:
NAMESPACE="$1"
TOKEN_NAME="$2"
KUBE_GET=$(kubectl get secrets "$TOKEN_NAME" -n "$NAMESPACE" -o yaml)
grep "$TOKEN_NAME" <<< "$KUBE_GET" | sed 's/.*: \(.*\)$/\1/'
说明:
这将找到包含给定令牌名称的第一行:
grep "$TOKEN_NAME" <<< "$KUBE_GET"
这将在grep找到的行中找到字符串“:”,然后返回该字符串之后的其余行:
sed 's/.*: \(.*\)$/\1/'
答案 2 :(得分:0)