Eu expandiria um pouco na primeira resposta e, em vez disso, faria algo assim para uma entrada do cron:
[ $(cat /proc/acpi/ac_adapter/AC/state | awk '{print $NF}') = 'on-line' ] && /path/to/your/script_file
Eu prefiro nem iniciar meu script, a menos que o teste seja bem-sucedido. Nesta instância, o cron nunca iniciará o script, se o laptop estiver com bateria.