O Bash realiza a expansão do histórico como a primeira coisa depois de ler uma linha de entrada, assim acontece antes de expandir as variáveis. O !$
em sua expansão !${i}
é usado para se referir ao último argumento do comando anterior como uma sintaxe de caso especial.
Se você quiser ler (ou executar) os comandos salvos no histórico, você pode usar history -p
ou fc
.
Além disso, observe que você não pode acessar o histórico de um shell interativo a partir de um script externo, e há maneiras mais simples de repetir comandos dentro de um script.