Você precisa citar duas vezes suas subestações de processo. Todos eles. Você também precisa citar duas vezes suas variáveis quando usá-las (novamente, todas elas - $ selection, $ HEIGHT, $ WIDTH, $ DIALOG_CANCEL, $ DIALOG_ESC e qualquer outra variável que você usar).
por exemplo. não faça isso:
result=$(echo "Processors and Cores"; lscpu)
faça isso:
result="$(echo "Processors and Cores"; lscpu)"
E não faça:
case $selection in
faça isso:
case "$selection" in
Melhor ainda, reescreva sua função display_result
para que ela não dependa de uma variável global ( $result
).
por exemplo. algo como:
display_result() {
# This version of display_result takes multiple args.
# The first is the title. The rest are displayed in the
# message box, with a newline between each arg.
# To insert a blank line use an empty string '' between any two args.
title="$1" ; shift
dialog --title "$title" \
--no-collapse \
--msgbox "$(printf "%s\n" "$@")" 0 0
}
Em seguida, nas suas declarações de caso, você o usaria assim:
...
case "$selection" in
1) display_result 'Processors and Cores' "$(lscpu)" ;;
2) display_result 'RAM' "$(dmicode --type 17)" ;;
...
esac