Skip to content

Instantly share code, notes, and snippets.

@Decstasy
Last active September 16, 2018 22:07
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Decstasy/245b4afbcfd2fa19914f904f1d0c7555 to your computer and use it in GitHub Desktop.
Save Decstasy/245b4afbcfd2fa19914f904f1d0c7555 to your computer and use it in GitHub Desktop.
Lists upgradable packages comma separated on systems with apt package management (hopefully)
#!/bin/bash
# Dennis Ullrich
#
# Lists upgradable packages comma separated on systems with apt package management (hopefully)
# Made for "Linux Helpdesk Deutschland - Hilfe für Linux Einsteiger" group
#
# 2018-09-14 v0.1: First release
# 2018-09-14 v0.2: Improved code... No read, while loops etc... Everything is processed with bash internals.
get_upgradable_packages() {
#
# Return code 0 + stdout = List of updates
# Return code 1 = Something went wrong with apt
# Return code 10 = No updates available
#
declare -a packages
tmp=`mktemp`
sudo apt list --upgradable 2>/dev/null >$tmp || { rm -f $tmp; return 1; }
GLOBIGNORE='*' IFS=$'\r\n' command eval 'packages=($(<$tmp))'
# remove 1st element (it's always "Listing..." from apt)
packages=("${packages[@]:1}")
# remove everything after 1st /
packages=("${packages[@]%\/*}")
rm -f $tmp
[[ ${#packages[@]} -eq 0 ]] && return 10
IFS=, eval 'echo "${packages[*]}"'
return 0
}
get_upgradable_packages
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment