这个问题很简单,但我正在努力理解在哪里甚至寻找解决方案。我想迭代我从openshift检索的pod列表,然后输出它的一些属性。
换句话说,我想做的是:
for node in $(oc get nodes);
do
echo ${node.name}
echo ${node.role}
done
不幸的是,这会导致错误"第67行:${node.name}: bad substitution"
使用echo node对节点进行迭代就可以了,但是它只是列出了所有的属性,每个属性值一行。
仅oc个get节点的输出为:
NAME STATUS ROLES AGE VERSION
avaloq-abcde-master-0-xyz Ready master 38d v1.xx
avaloq-abcde-master-1-dfs Ready master 38d v1.xx
avaloq-abcde-master-2-gsd Ready master 38d v1.xx
的输出for node in $(oc get nodes -o name);
do
echo ${node}
done
node/avaloq-abcde-master-0-xyz
node/avaloq-abcde-master-1-dfs
node/avaloq-abcde-master-2-gsd
如果我尝试通过-o(输出格式?)添加另一个属性,它会抛出以下错误:
error: unable to match a printer suitable for the output format "roles", allowed formats are: custom-columns,custom-columns-file,go-template,go-template-file,json,jsonpath,jsonpath-as-json,jsonpath-file,name,template,templatefile,wide,yaml
我期望的是以下输出
node/avaloq-abcde-master-0-xyz
master
node/avaloq-abcde-master-1-dfs
master
node/avaloq-abcde-master-2-gsd
master
我想这就是我的理解不足之处。是对象/表的数组。通过"获取节点"返回;不是一个对象数组,而只是一个由制表符和返回字符分隔的文本列表?
如果您只需要oc get node中的特定列,则可以使用这样的内容命令
oc get nodes | awk '{print $1, $3}'
将输出像
这样的输出avaloq-abcde-master-0-xyz master
avaloq-abcde-master-1-dfs master
avaloq-abcde-master-2-gsd master