用于循环数组

时间:2012-06-09 16:11:29

标签: arrays bash for-loop whitespace

我正在尝试解决bash脚本的问题,该脚本旨在搜索/ Users /中的每个用户主目录,并找到两个不同的目录,存储在数组“SUBDIRS”中。如果这些目录存在,我想删除recursive和force选项。如果它们不存在,我希望脚本继续查找下一个目录,下一个主文件夹等。

#!/bin/sh


err=0




SUBDIRS=(
    "Library/Application Support/Spotify"
    "Library/Caches/com.spotify.client"
)


for HOMEDIR in /Users/*; do

    for SUBDIR in ${SUBDIRS}; do

        DIR="${HOMEDIR}/${SUBDIR}"

            if [[ -d "${DIR}" ]]; then
                rm -rf "${DIR}"
                echo "${HOMEDIR}/${SUBDIR} has been removed."
                APP=$(find "${HOMEDIR}" -name [sS]potify.app)
                rm -rf "${APP}"
            fi

    done

done

exit $err

1 个答案:

答案 0 :(得分:3)

你需要表明它是一个要扩展的数组(并引用它)。

for SUBDIR in "${SUBDIRS[@]}"; do

您应该在find命令中引用该模式,以便find将其展开而不是shell。

APP=$(find "${HOMEDIR}" -name '[sS]potify.app')