bash exit codes - ghdrako/doc_snipets GitHub Wiki
Strategies for Discovering Exit Codes
Here’s how to find the return code meanings for the commands you frequently use:
- Manual Pages (man) Search man pages (e.g., man grep, man diff) for sections titled “Exit Status” or “Diagnostics.”
- Command Documentation: Often, online wikis or command-specific documentation websites list and explain exit codes.
- Experimentation: Purposely induce errors (bad file names,etc.) and examine the exit status using echo $?
Caution with Assumptions
- Not all commands provide detailed exit codes. It’s essential to consult reliable documentation sources to avoid surprises.
- Exit code meanings can sometimes slightly differ between implementations of the same command (e.g., GNU vs BSD-like systems). Test on your target systems.
#!/bin/bash
backup_file="/path/to/important_data.txt"
backup_destination="/backup/location"
cp $backup_file $backup_destination # Attempt backup
if [ $? -eq 0 ]; then
echo "Backup successful!"
else
echo "Backup failed. Check permissions or disk space."
# Optionally add logic to send an email or alert
fi
cd /some/path && echo "Success" || echo "Failure"
Dependency checking
#!/bin/bash
command -v unzip >/dev/null 2>&1 # Check if 'unzip' is installed
if [ $? -ne 0 ]; then
echo "'unzip' is required. Please install."
exit 1
fi
Network Troubleshooting
#!/bin/bash
ping -c 2 www.google.com
if [ $? -ne 0 ]; then
echo "Internet connection appears offline. Check your network."
else
echo "Connected to the internet."
fi
Retry logic
#!/bin/bash
attempts=0
max_attempts=3
while [ $attempts -lt $max_attempts ]; do
rsync -avz remote_folder/ ./local_backup/
if [ $? -eq 0 ]; then
echo "Backup successful after $attempts tries"
break # Exit loop on success
fi
let attempts=attempts+1
echo "Backup failed. Retrying in 5 seconds..."
sleep 5
done