How can I check for apt-get errors in a bash script?
The simplest approach is to have your script continue only if apt-get
exits correctly. For example:
sudo apt-get install BadPackageName &&
## Rest of the script goes here, it will only run
## if the previous command was succesful
Alternatively, exit if any steps failed:
sudo apt-get install BadPackageName || echo "Installation failed" && exit
This would give the following output:
terdon@oregano ~ $ foo.sh
[sudo] password for terdon:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package BadPackageName
Installation failed
This is taking advantage of a basic feature of bash and most (if not all) shells:
-
&&
: continue only if the previous command succeeded (had an exit status of 0) -
||
: continue only if the previous command failed (had an exit status of not 0)
It is the equivalent of writing something like this:
#!/usr/bin/env bash
sudo apt-get install at
## The exit status of the last command run is
## saved automatically in the special variable $?.
## Therefore, testing if its value is 0, is testing
## whether the last command ran correctly.
if [[ $? > 0 ]]
then
echo "The command failed, exiting."
exit
else
echo "The command ran succesfuly, continuing with script."
fi
Note that if a package is already installed, apt-get
will run successfully, and the exit status will be 0.