Другое возможное решение:
#!/bin/bash
max=100 rng=20 ### Problem conditions
texta="The sum of the %.3sst %d elements is: %d\n" ### Output
textb="The first sum is %ser than the last sum\n" ### Output
unset num ### used vars
for (( s1=s2=c=0 ; c<max ; c++ ))
do num[c]=$RANDOM
(( c<rng )) && (( s1+=num[c] )) ### first sum.
(( c>=max-rng )) && (( s2+=num[c] )) ### last sum.
done
compare=small; (( s1 > s2 )) && compare=bigg
printf "$texta" "first" "$rng" "$s1"
printf "$texta" " last" "$rng" "$s2"
printf "$textb" "$compare"
The sum of the first 20 elements is: 348899
The sum of the last 20 elements is: 336364
The first sum is bigger than the last sum
Одна из проблем заключается в том, что '$1'
не расширяет переменную. Вы действительно намерены передать буквальный знак доллара? Если нет, вы должны написать "$1"
в двойных кавычках.
Это подтверждается вашим вторым примером, где вы передаете фактические значения, и это работает.