Comportamento muito tenso. Mas há uma lógica por trás.
bash lê o script linha por linha. A primeira instrução awk apenas grava o arquivo skrypt.sh new, com o mesmo conteúdo, porque não há nada para substituir.
A segunda instrução awk substitui awk por #awk (substituição única). Então, adiciona um caractere. Então bash lê o resto do arquivo. O deslocamento é posicionado no final da linha (com o segundo awk declaração, linha 4). Mas essa linha agora é um pouco mais longa (um caractere). Então o bash lê o resto da linha, que é um único h . Isso é encadeado como um comando (porque estamos em um script bash e termina com uma nova linha). E h , claro, não é um comando válido, daí a mensagem de erro.
Para conseguir o que você quer (além de que seu script é muito precário) adicione um caractere mais no final da linha 4, que não pode ser interpretado como um comando, um espaço ( ) por exemplo.
Por último, mas não menos importante:
You shall not edit a scripts within itself.