Questo è molto facile da realizzare:
#!/bin/sh
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "example@unixlinux.online"
Quando l'utente corrente non è root, riesegui lo script tramite sudo .
Nota che sto usando sudo qui invece di su . Questo perché ti consente di preservare gli argomenti. Se usi su , il tuo comando dovrebbe essere su -c "$0 example@unixlinux.online" che rovinerebbe i tuoi argomenti se hanno spazi o caratteri speciali della shell.
Se la tua shell è bash, puoi evitare la chiamata esterna a whoami :
(( EUID != 0 )) && exec sudo -- "$0" "example@unixlinux.online"
Puoi controllare anche l'UID:
if [ $(id -u) != 0 ]; then
echo "You're not root"
# elevate script privileges
fi
Puoi chiamare lo script stesso e controllare:
#! /bin/bash
if [ "root" != "$USER" ]; then
su -c "$0" root
exit
fi
...