文件夹数返回为零值

Number of folders is returned as zero value

我正在尝试计算作为参数传递的文件夹的数量,并且以某种方式将增量返回为 0。 代码看起来像: `

all=ls  | grep 
echo $all

k=0
for i in $all
do
  if [ -d "$i" ];then
k=$((k+1))
  fi
  echo $i
done
echo $k

fi

$1 是文件夹名称,$2 是文件夹名称的一部分。 因此,例如它应该计算文件夹内的文件夹数。 测试文件夹里面还有3个文件夹,计数应该是3,但我一直得到0值

您的脚本有很多语法问题。

要计算文件夹内的文件夹,您可以使用此函数:

cntdir() { local a=( ""/""*/ ); echo "${#a[@]}"; }

然后将其命名为:

cntdir folder1 abc
  • 此函数使用 glob 模式 ""/""*/ 创建一个数组 a,其中 / 最后确保我们只匹配目录。
  • ${#a[@]} 获取数组元素的个数