aguamole
(usa KUbuntu)
Enviado em 19/04/2024 - 18:56h
Cara, quando fui responder a energia aqui acabo.
Eu consegui reproduzir o erro e ele ocorre porque eu não usei um "if", eu usei uma forma de if mais simplificado, mas que eu esquece que quando usado com um "ponto e vírgula ';'" o ponto e vírgula não é contado na condicional sendo executado o que esta após não importando o resultado da condicional, isso fazia com que o bash interpretasse o "exit 1" independente do resultado da condicional o que finaliza a execução mesmo que o usuário seja root, o que não é desejado, apenas é desejado o "exit 1" se o usuário não for root. Agora eu coloquei o if.
#!/bin/bash
# Script criado para automatizar procedimento de instalação de
# módulo de saúde de bateria de notebook Acer no Kernel Linux
# quando uma nova versão for instalada.
## Depuração
set -e -u
#________________________________________________
## Configurações
driver_battery="/tmp/acer-wmi-battery"
cpu_cores="$(grep -c "physical id" /proc/cpuinfo)"
log_da_execucao="/var/log/linux_bateria.log"
#________________________________________________
{
if [[ "$(id -u)" == "0" ]]
then
echo "Você é root!"
else
echo "Você não é root, execute como root!"
exit 2
fi
if [[ ! -e "${driver_battery}" ]]
then
mkdir -p "${driver_battery}"
else
if [[ ! -d "${driver_battery}" ]]
then
echo "${driver_battery} é um arquivo e deveria ser diretório, remova o arquivo e tente novamente, abortado!"
exit 3
fi
fi
cd "${driver_battery}"
git clone https://github.com/frederik-h/acer-wmi-battery.git
make -j"${cpu_cores}"
cp "${driver_battery}/acer-wmi-battery.ko" "/lib/modules/$(uname -r)"
depmod
modprobe acer_wmi_battery
[[ -d "${driver_battery}" ]] && rm -r -d "${driver_battery}"
} >>"${log_da_execucao}" 2>&1
Agora eu percebe que tem outro problema na condição "[[ ! -d "${driver_battery}" ]]" não é fatal mas daria erro caso não fosse um diretório como por exemplo um arquivo.
Acabei de fazer mais 2 modificação porque permitia possíveis problemas de ocorrer. Adicionei o parâmetro -p no mkdir porque sem isso poderia dar erro na criação do diretório caso o diretório pai passado a variável não existir, e a outra foi para evitar do mkdir tentasse criai diretório por cima de "dispositivo de bloco" que é por exemplo o "/dev/sda1" o que daria um erro na criação do diretório.
É isso, abraço <3