我正在尝试将 find 命令的输出存储到数组中。
我尝试了不同的东西,但似乎没有任何效果,其中一些在下面的注释行中。我猜问题在于“${findNameCmdSubDir[@]}”正在被标记化,并且打算从搜索中排除的目录被忽略,并且所有目录都被列出。
如果我给出 find 命令而不将它传递给数组,即普通的 find 命令,我会看到列出所有其他目录的预期输出,而没有排除。
#! /bin/bash
android_path=$1
excludeDirFromSearch=( doc build test unit-test script hardware prebuilt device . )
let "dirCount = 0"
findNameCmdSubDir=()
for dir in "${excludeDirFromSearch[@]}"; do
if [ $((dirCount++)) -eq ${#excludeDirFromSearch[@]} ]; then
findNameCmdSubDir+=(-name "${dir}*")
else
findNameCmdSubDir+=(-name "${dir}*" -prune -o)
fi
done
searchSubDirectories=()
searchSubDirectories=( $(find "${android_path}" -mindepth 1 -maxdepth 1 \
"${findNameCmdSubDir[@]}" -type d ) ) <<-- Not Working!
#find "${android_path}" -mindepth 1 -maxdepth 1 "${findNameCmdSubDir[@]}" \
# -type d | while read line; do
# echo "$line"
#done <-- Not working
find "${android_path}" -mindepth 1 -maxdepth 1 "${findNameCmdSubDir[@]}" \
-type d -print <-- works as expected !
echo "${searchSubDirectories[@]}"
更新
我尝试转义双引号,但仍然没有运气
searchSubDirectories=( $(find "${android_path}" -mindepth 1 -maxdepth 1 \"${findNameCmdSubDir[@]}\" -type d ) ) <<-- Not Working!