Gostaria de verificar se o atual uid
é zero e, caso contrário, execute novamente o script como raiz, por exemplo,
[[ $UID = 0 ]] || exec sudo $0 "$@"
Por exemplo, fazer com que a segunda linha do script (após "#!/bin/bash"
) faça o que foi solicitado.
Se houver uma parte longa no começo em que o usuário original não foi necessário, faça isso com uma declaração if:
#!/bin/bash
if [[ $UID = 0 ]]
then
: do privileged stuff
else
: do unprivileged stuff
exec sudo $0 "$@"
fi
O valor $UID
é bash-específico (usado porque a pergunta foi marcada com bash
). Scripts mais portáveis usariam a saída de id
.