【问题标题】:Take parts of the standard output value and put it into a array variable取出标准输出值的一部分并将其放入数组变量中
【发布时间】:2014-01-13 04:05:53
【问题描述】:

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

我想尝试通过“显示 VM 命令”循环每个 VM 来使脚本更具动态性。我的想法是获取显示所有 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 

【问题讨论】:

  • 顺便说一句,这不是真正的 bash。这是一个busybox shell..
  • 谢谢,这应该会有所帮助!仍然需要摆脱 Vmid,但我会尝试从你给我的代码中学习。

标签: linux bash virtual-machine vmware vmware-server


【解决方案1】:

我猜你需要这个:

$ 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.

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

【讨论】:

  • 要获取VM-ID,可以使用cut -d' ' -f1
猜你喜欢
  • 1970-01-01
  • 2020-03-16
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 1970-01-01
  • 2022-01-01
相关资源
最近更新 更多