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.


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:

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.