如何使用 Bash 在文件中获取值
How to get a value in a file with Bash
我正在尝试从 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=
TOKEN_NAME=
KUBE_GET=$(kubectl get secrets $TOKEN_NAME -n $NAMESPACE -o yaml)
echo $KUBE_GET
试试这个:
NAMESPACE=""
TOKEN_NAME=""
KUBE_GET=$(kubectl get secrets "$TOKEN_NAME" -n "$NAMESPACE" -o yaml)
grep "$TOKEN_NAME" <<< "$KUBE_GET" | sed 's/.*: \(.*\)$//'
解释:
这将找到包含给定令牌名称的第一行:
grep "$TOKEN_NAME" <<< "$KUBE_GET"
这将在 grep 找到的行中找到字符串“:”,然后 return 该字符串之后的其余行:
sed 's/.*: \(.*\)$//'
我建议使用 yq. Please check its document 了解安装细节。
安装 yq 后,您可以在命令行中输入以下命令:
# yq r your_yaml_file 'data."consul-write"'
如果有效,请将其放入 bash 文件。
使用awk在匹配TOKEN_NAME
的行中挑出字段2
kubectl get secrets $TOKEN_NAME -n $NAMESPACE -o yaml | awk -vns=$TOKEN_NAME ' ~ ns {print }'
编辑:固定变量和多行输出。
我正在尝试从 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=
TOKEN_NAME=
KUBE_GET=$(kubectl get secrets $TOKEN_NAME -n $NAMESPACE -o yaml)
echo $KUBE_GET
试试这个:
NAMESPACE=""
TOKEN_NAME=""
KUBE_GET=$(kubectl get secrets "$TOKEN_NAME" -n "$NAMESPACE" -o yaml)
grep "$TOKEN_NAME" <<< "$KUBE_GET" | sed 's/.*: \(.*\)$//'
解释:
这将找到包含给定令牌名称的第一行:
grep "$TOKEN_NAME" <<< "$KUBE_GET"
这将在 grep 找到的行中找到字符串“:”,然后 return 该字符串之后的其余行:
sed 's/.*: \(.*\)$//'
我建议使用 yq. Please check its document 了解安装细节。
安装 yq 后,您可以在命令行中输入以下命令:
# yq r your_yaml_file 'data."consul-write"'
如果有效,请将其放入 bash 文件。
使用awk在匹配TOKEN_NAME
的行中挑出字段2 kubectl get secrets $TOKEN_NAME -n $NAMESPACE -o yaml | awk -vns=$TOKEN_NAME ' ~ ns {print }'
编辑:固定变量和多行输出。