Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 获取部分标准输出值并将其放入数组变量中_Linux_Bash_Virtual Machine_Vmware_Vmware Server - Fatal编程技术网

Linux 获取部分标准输出值并将其放入数组变量中

Linux 获取部分标准输出值并将其放入数组变量中,linux,bash,virtual-machine,vmware,vmware-server,Linux,Bash,Virtual Machine,Vmware,Vmware Server,我目前正在使用BASH编写一个脚本,将VM文件备份到远程服务器 我想尝试通过从show-VM命令循环遍历每个VM,使脚本更具动态性。我的想法是获取显示所有VM的命令的标准输出,并将其分解并转换为有用的变量。可能是一个多数组 输出结果是这样的,有没有办法把它全部分解?比如说空格和换行符 Vmid Name File Guest OS

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

我想尝试通过从show-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 
我想你需要这个:

$ 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


忽略提示中的$;它仍然是根提示符。如果我使用in-placeif$..

顺便说一句,我会将其解释为注释,它不是真正的bash。这是一个多管闲事的外壳。谢谢。这应该会有点帮助!仍然需要从中获取Vmid,但我将尝试从您给我的代码中学习。要获取VM-ID,可以使用cut-d''-f1
$ 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.