我找遍了所有的地方,但是这些词显然太笼统了。我正在写一个脚本来搜索一组文件夹中的.mp3文件。有些文件夹没有mp3,因此必须将其排除在外。
我创建了一个数组来保存uniq'd文件夹的名称。这个find命令将获取我需要的文件夹。
Folders=$(sudo find /my/music/ -type f -name "*.mp3" | cut -d'/' -f7 | sort -u)
当我试图计算数组中的文件夹数时,总是会得到1
echo ${#Folders[@]}
echo ${Folders[@]}将它们打印在单独的行上,所以我认为它们是单独的数组元素。有人能解释一下发生了什么事吗?您可能必须在cut命令中抖动字段号才能在本地复制。

最佳答案

Folders不是数组,而是变量。
你需要:

Folders=( $(sudo find /my/music/ -type f -name "*.mp3" | cut -d'/' -f7 | sort -u) )

即用()将命令替换括起来。现在${#Folders[@]}将给出数组Folders的元素数。

关于arrays - bash数组计数始终返回1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38597589/

10-13 05:34