make
не является универсальным.
Используемый вами Makefile
специфичен для программы GNU make
. Вы используете программу OpenBSD make
, производную от Адама де Бура pmake
. У них совершенно разный синтаксис.
Если вы соберете git из дерева портов OpenBSD в /usr/ports/devel/git
, вы обнаружите, что это и многое другое было разработано за вас.
Вот иллюстрация, показывающая, как ответить на заданный вами вопрос:
s='1 2 3 4 5' # Space separated alphabet of characters
for a in $s
do
for b in $s
do
for c in $s
do
printf "%s%s%s\n" "$a" "$b" "$c"
done
done
done
Этот код имеет алфавит всего из пяти символов по сравнению с вашими 66 (, которые вы пропустили 6
из вашего диапазона чисел ), и использует только три итератора, а не восемь. Он генерирует 125 выходов:
111
112
113
114
115
121
122
...
555
Использование вашего алфавита, но всего с тремя итераторами даст 287496 комбинаций. Вы можете определить количество комбинаций, возведя количество символов в алфавите в степень количества итераторов. Здесь, например, 5 3 = 125 и 66 3 = 287496, и ваше целевое требование будет 66 8 ≈ 3,6x10 14 комбинации.