O problema é que killall está esperando um padrão que corresponda a um nome de processo em vez de seu PID, enquanto $$ fornece o PID de processo atual. Você deseja usar kill .
Além disso, se você quiser remover um diretório junto com todo o seu conteúdo, precisará da opção -r para rm :
Por fim, qualquer coisa que você fizer depois de matar o processo não entrará em vigor: mova o kill para o final do trap e remova o exit ao mesmo tempo:
trap 'rm -rf "$folder2";kill $$' 18 20 24
Se você quiser interromper o funcionamento do for antes de remover $folder2 , use break :
trap 'break;rm -rf "$folder2";kill $$' 18 20 24