Policz elementy w rozszerzeniu karty bash?

5

Mam prostą pętlę w jednym z moich skryptów przetwarzania danych, która wygląda mniej więcej tak ...

for f in *.dat; do
  process ${f}
done

Chciałbym zbudować wskaźnik stanu, więc chciałbym móc policzyć liczbę elementów *.dat, ale nie mogę znaleźć żadnych wskazówek, a Google nie jest specjalnie przyjazny dla tego rodzaju wyszukiwania.

brightwellcd
źródło
2
Nie w pełni związane z twoim pytaniem, ale nie zapomnij cytować "${f}", aby radzić sobie z plikami zawierającymi białe znaki lub znaki globujące.
slhck

Odpowiedzi:

9

Z tablicami Bash:

arr=(*.dat)
count=${#arr[@]}

Aby to złamać, ${arr[@]} daje ci każdy element tablicy i # podaje liczbę w ekspansji parametrów (faktycznie da ci długość łańcucha, ale dla tablic jest to liczba).

Zobacz także na Wiki Bash Hackers:

slhck
źródło