Para atribuir a saída padrão e o erro padrão de um comando (menos os caracteres de nova linha à direita) a uma variável, a sintaxe nos shells do tipo POSIX é:
updates=$(/usr/lib/update-notifier/apt-check 2>&1)
Para gerar o conteúdo de uma variável com um caractere de nova linha adicionado, a sintaxe é:
printf '%s\n' "$updates"
Para dividir o conteúdo de uma variável em um caractere, a sintaxe é:
IFS=';'
set -o noglob
set -- $updates
printf '%s\n' "First element: $1" "Second element: $2"
Ou você pode fazer:
updates=$(/usr/lib/update-notifier/apt-check 2>&1)
all=${updates%";"*}
security=${updates#*";"}
printf '%s\n' "$all packages can be updated" \
"$security updates are security updates"
Para obter um equivalente de
/usr/lib/update-notifier/apt-check --human-readable
Você também pode usar cut
para obter o primeiro campo delimitado por ponto-e-vírgula de cada linha de uma variável com:
printf '%s\n' "$updates" | cut -d ';' -f 1
Embora se essa variável tiver apenas uma linha, é um pouco exagerado.