Ваша строка
top -b -n1 | awk '/^Cpu/ {print $2}' | cut -d. -f1
неверна. Прежде всего, вы просите AWK найти строку, начинающуюся с Cpu, когда она начинается с %Cpu.
Во-вторых, вам не нужна часть cut. Вы можете напрямую использовать awk:
$ top -b -n1 | awk '/^%Cpu/ {gsub(/\./," ");print $2}'
31
В будущем вы можете отлаживать скрипты с set -x в верхней части скрипта после строки #!/bin/bash. Кроме того, используйте https://www.shellcheck.net/, который будет проверять синтаксис сценария оболочки