Adicione a linha: set -u ao topo do seu código. Em seguida, execute novamente e veja o que você obtém.
O erro que a variável i_ está desvinculada, ou seja, não definida em lugar algum. Agora, por que o bash está falando sobre essa variável i_ ? Você não definiu em nenhum lugar. Observe atentamente sua instrução de eco: "hello_$i_$j" do sublinhado depois que o $ i estiver sendo visto como a variável i_ , pois _ é um caractere de identificador de nome de variável válido.
Portanto, para evitar que o bash faça isso, você precisa colocar o nome da variável entre chaves {} , como asecho "Hello_${i}_${j}", as chaves impedem que o nome da variável se transmita ao _ . Nota: as chaves na variável $j são opcionais, pois o " serve ao propósito de delimitar.