我试图了解我在这里做错了什么,但似乎无法确定原因。我想从输出中为bash中的for循环创建一组数组。下面是我的代码至今:从循环输出创建数组
for i in `onedatastore list | grep pure02 | awk '{print $1}'`;
do
arr${i}=($(onedatastore show ${i} | sed 's/[A-Z]://' | cut -f2 -d\:)) ;
echo "Output of arr${i}: ${arr${i}[@]}" ;
done
该条件的输出是这样的:
107
108
109
我想是基于这些独特的ID要做的是创建数组:
arr107
arr108
arr109
的阵列将有像这样的数据中的每个:
[[email protected]/]$ arr107=($(onedatastore show 107 | sed 's/[A-Z]://' | cut -f2 -d\:))
[[email protected]/]$ echo ${arr107[@]}
DATASTORE 107 INFORMATION 107 pure02_vm_datastore_1 oneadmin oneadmin 0 IMAGE vcenter vcenter /var/lib/one//datastores/107 FILE READY DATASTORE CAPACITY 60T 21.9T 38.1T - PERMISSIONS um- u-- --- DATASTORE TEMPLATE CLONE_TARGET="NONE" DISK_TYPE="FILE" DS_MAD="vcenter" LN_TARGET="NONE" RESTRICTED_DIRS="/" SAFE_DIRS="/var/tmp" TM_MAD="vcenter" VCENTER_CLUSTER="CLUSTER01" IMAGES
当我尝试这个脚本部分,虽然我得到的输出错误,例如:
./test.sh: line 6: syntax error near unexpected token `$(onedatastore show ${i} | sed 's/[A-Z]://' | cut -f2 -d\:)'
我似乎无法找出对这种情况下使用的语法。
最后,我想要做的是能够比较不同的数据存储,并根据哪些数据存储有更多的可用空间,将虚拟机部署到它。
希望有人能帮忙。感谢
哪些具体版本? –
请务必阅读[Bash FAQ 001](http://mywiki.wooledge.org/BashFAQ/001)。 – chepner