Você precisa
touch "${toto}hihi.log"
O problema é que o shell não pode saber sem as chaves quantos caracteres fazem parte do nome da variável. Assim, trata todos os caracteres legais como parte do nome. Neste caso, isso é tudo antes do .
; Ou seja, o shell usa a variável não existente $totohihi
.
Em geral, é útil usar a opção -x
do shell para ver o que está acontecendo:
set -x
touch "$totohihi.log"
+ touch .log