首页 > 解决方案 > 基于命令输出的 Bash 选择菜单

问题描述

如何根据其他命令输出制作选择菜单?例如运行以下命令:

kubectl config get-contexts

我得到以下输出:

CURRENT   NAME         CLUSTER         AUTHINFO       NAMESPACE
*         Name1        Cluster1        Auth1        
          Name2        Cluster2        Auth3   
          Name3        Cluster3        Auth3     

我想要实现的是将 NAME 和 CLUSTER 列打印为菜单选项,如果选择了任何选项,则将其作为变量传递给另一个命令:

kubectl config use context $NameX

但是不知道如何使用命令输出来做到这一点。

标签: bashshell

解决方案


为了将命令的输出用作另一个命令的输入,您可以使用反引号,或者更具可读性$()(但后者并不总是有效)。

例如,提供有关ls“程序”的更多信息:

which ls
file /bin/ls

这可以缩短为:

file $(which ls)

或者:

file `which ls`

在您的示例中,它将类似于:

kubectl config use context $(kubectl config get-contexts ...), or:
kubectl config use context `kubectl config get-contexts ...`

显然,您需要从配置中准确指定您需要哪些信息才能使其正常工作。


推荐阅读