Isso é muito fácil de realizar:
#!/bin/sh
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "$@"
Quando o usuário atual não é root, execute novamente o script em sudo .
Observe que estou usando sudo aqui em vez de su . Isso porque permite preservar argumentos. Se você usa su , seu comando teria que ser su -c "$0 $@" , o que iria mangle seus argumentos se eles tivessem espaços ou caracteres de shell especiais.
Se o seu shell é bash, você pode evitar a chamada externa para whoami :
(( EUID != 0 )) && exec sudo -- "$0" "$@"