linux – 一个使用另一个bash命令输出的bash命令
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 一个使用另一个bash命令输出的bash命令,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1440字,纯文字阅读大概需要3分钟。
内容图文
![linux – 一个使用另一个bash命令输出的bash命令](/upload/InfoBanner/zyjiaocheng/961/5da173b2b4ef41f2b7ceab39045cef92.jpg)
我在谷歌云有一组机器.
来自我的localhost:
gcloud compute instance-groups list-instances workers
OUTPUT:
NAME ZONE STATUS
workers-lya2 us-central1-a RUNNING
workers-23d4 us-central1-a RUNNING
...
workers-3asd3 us-central1-a RUNNING
我想从该列表中选择一个随机工作者名称(比如workers-23d4),然后从第一个命令开始区域us-central1-m并将其粘贴到此命令中:
gcloud compute --project "my-project" ssh --zone "<zone_name_from_first_command> "<machine_name_from_first_command>"
bash上的一点点弱点.请帮忙
解决方法:
gcloud compute instance-groups list-instances workers | grep -v "^NAME" | shuf -n 1 | awk '{print $1, $2}' |
while read machine zone; do
export SELECTED_MACHINE="$machine"
export SELECTED_ZONE="$zone"
done
gcloud compute --project "my-project" ssh --zone "$SELECTED_ZONE" "$SELECTED_MACHINE"
> grep -v“^ NAME”剥离所有以NAME开头的行(假设它只是你要剥离的第一行)
> shuf从剩余的行中取一条随机行
> awk'{print $1,$2}’在空格处分割行并打印第一列和第二列
> read读取awk的输出到变量$machine和$zone
更新:上面的代码适用于zsh,但不适用于bash,因为bash运行子shell(zsh不)和export does only pass variables to subprocesses中的管道,而不是父进程.以下脚本通过在父进程中运行读取来解决此问题:
machine_zone=$(gcloud compute instance-groups list-instances workers |
grep -v "^NAME" | shuf -n 1 | awk '{print $1, $2}')
read machine zone <<< $machine_zone
gcloud compute --project "my-project" ssh --zone "$zone" "$machine"
内容总结
以上是互联网集市为您收集整理的linux – 一个使用另一个bash命令输出的bash命令全部内容,希望文章能够帮你解决linux – 一个使用另一个bash命令输出的bash命令所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。