gpt4 book ai didi

linux - 取出标准输出值的一部分并将其放入数组变量中

转载 作者:太空宇宙 更新时间:2023-11-04 04:06:12 25 4
gpt4 key购买 nike

我目前正在编写一个脚本(使用 BASH),它将 VM 文件备份到远程服务器。

我想尝试通过“显示虚拟机命令”循环遍历每个虚拟机,使脚本更加动态。我的想法是获取显示所有虚拟机的命令的标准输出并将其分解并将其转换为有用的变量。可能是多数组。

输出是这样的,有没有办法把它全部分解?比如说空格和换行符?

Vmid         Name                                  File                                  Guest OS           Version   Annotation
10 FREEPBX [datastore2] FREEPBX/FREEPBX.vmx other26xLinux64Guest vmx-08
13 AdaptivNICE2Cloud [datastore2] AdaptivNICE2Cloud/AdaptivNICE2Cloud.vmx other26xLinux64Guest vmx-08
15 IVSTelManager [datastore2] IVSTelManager/IVSTelManager.vmx debian6Guest vmx-08
4 Neptune [datastore1] Neptune/Neptune.vmx winNetEnterprise64Guest vmx-08
9 Kayako [datastore2] Kayako/Kayako.vmx other26xLinux64Guest vmx-08

最佳答案

我想你需要这个:

$ vim-cmd vmsvc/getallvms | sed -n 's|.*\[|/vmfs/volumes/|;s|\] *|/|;s|\.vmx .*|.vmx|p'
/vmfs/volumes/datastore2/FREEPBX/FREEPBX.vmx
/vmfs/volumes/datastore2/AdaptivNICE2Cloud/AdaptivNICE2Cloud.vmx
/vmfs/volumes/datastore2/IVSTelManager/IVSTelManager.vmx
/vmfs/volumes/datastore1/Neptune/Neptune.vmx
/vmfs/volumes/datastore2/Kayako/Kayako.vmx
# Prints all VMX files paths

或者

$ vim-cmd vmsvc/getallvms | sed -n 's|.*\[|/vmfs/volumes/|;s|\] *|/|;s|/[^/]*\.vmx .*||p'
/vmfs/volumes/datastore2/FREEPBX
/vmfs/volumes/datastore2/AdaptivNICE2Cloud
/vmfs/volumes/datastore2/IVSTelManager
/vmfs/volumes/datastore1/Neptune
/vmfs/volumes/datastore2/Kayako
# Prints all directories having VMX files. These directories also contain the virtual HDDs, which you would want to backup.

(忽略提示中的 $;它仍然是根提示符。如果我使用 # 来代替 $..,那么会将其解释为注释。)

关于linux - 取出标准输出值的一部分并将其放入数组变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21083712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com