Arrays 检查多个bash数组是否为gt 0

Arrays 检查多个bash数组是否为gt 0,arrays,bash,Arrays,Bash,我目前有3个数组,检查子目录是否有.py,.java,.js等 jsfilearray=(`find ./ -maxdepth 10 -name "*.js"`) javafilearray=(`find ./ -maxdepth 10 -name "*.java"`) pyfilearray=(`find ./ -maxdepth 10 -name "*.py"`) 如果jsfilearray或javafilearray或pyfil

我目前有3个数组,检查子目录是否有
.py
.java
,.js等

jsfilearray=(`find ./ -maxdepth 10 -name "*.js"`)
javafilearray=(`find ./ -maxdepth 10 -name "*.java"`)
pyfilearray=(`find ./ -maxdepth 10 -name "*.py"`)
如果
jsfilearray
javafilearray
pyfilearray
未找到任何文件,如何进行比较

我目前只针对一个阵列执行此操作,包括:
if[${#jsfilearray[@]}-gt 0];然后

对于3个阵列,如何在一个条件下完成所有操作


谢谢

如果任何文件名中有空格,您将遇到问题。创建阵列时最好使用,即:

 readarray -t jsfilearray <<< "$(find ./ -maxdepth 10 -name "*.js")"

您还可以将所有3个阵列合并为一个阵列,然后检查大小。大概是这样的:

declare -a allFiles

allFiles+=( "${pyfilearray[@]}" "${javafilearray[@]}" "${jsfilearray[@]}" )

if [[ ${#allFiles[@]} -gt 0 ]]; then ..

如果只检查所有三种文件类型的大小。您可以使用find命令搜索多个ext:

allfiles=$(find . -iregex '.*\.\(py\|\|java\|js\)$')

if [[ ${#allFiles[@]} -gt 0 ]]; then ..

在许多编程语言中,您可以使用布尔运算符
&&
(and)和
|
(or)组合多个检查


像在任何语言中一样使用
|
,并且像
${jsfilearray[@]}
一样错过了
#
道歉。谢谢guysGosh这很聪明,至少对我来说是这样。我喜欢你的第二个代码段。我是否应该在第二个代码段中使用
declare
行?这只是声明数组的一种显式方式。
allfiles=$(find . -iregex '.*\.\(py\|\|java\|js\)$')

if [[ ${#allFiles[@]} -gt 0 ]]; then ..
if [ "${#jsfilearray[@]}" = 0 ] ||
   [ "${#javafilearray[@]}" = 0 ] ||
   [ "${#pyfilearray[@]}" = 0 ]
then
    echo "At least one array is empty"
else
    echo "All arrays contain something"
fi