计算bash通配符扩展中的元素?

bri*_*lcd 7 linux bash

我的一个数据处理脚本中有一个简单的循环,看起来像这样......

for f in *.dat; do
  process ${f}
done
Run Code Online (Sandbox Code Playgroud)

我想建立一个状态指示器,所以我希望能够计算 中的元素数量*.dat,但我找不到任何线索,而且 Google 对这种搜索并不完全友好。

slh*_*hck 11

使用 Bash 数组:

arr=(*.dat)
count=${#arr[@]}
Run Code Online (Sandbox Code Playgroud)

为了分解这个,${arr[@]}给你数组中的每个元素,并#给你参数扩展中的计数(实际上它会给你字符串长度,但对于数组它是计数)。

另请参阅 Bash Hackers Wiki: