Isso porque sudo -s
inicia um shell de root e é aí que você se encontra depois de digitar a senha. Se você sair do shell, verá o Code that need sudo
:
$ foo.sh
Code that don't need sudo.
[sudo] password for terdon:
[root@tpad terdon]# exit
Code that need sudo
Em geral, em todos os scripts, quando você diz para executar um comando, o script só continuará sendo executado após o término do comando. Então, quando seu script lançou sudo -s
, ele esperou que isso terminasse antes de continuar. É por isso que o texto foi impresso depois que executei exit
(ou pressionei ctrl + D ).