Dlaczego tak
Zmienna $# przechowuje liczbę argumentów przekazanych do skryptu, bez nazwy samego skryptu, czyli 3. Zmienna $2 to drugi argument, a więc /mnt/backup; pierwszym argumentem $1 jest „dokumenty”. Wynik 4 powstaje po wliczeniu nazwy skryptu, która jest dostępna w $0, ale nie jest liczona w $#.