Works on the command line, doesn't work in a bash script...?

Ok, here's the code. It's not perfected by any means, but it's already saved me once... in removing all the unnecessary packages from dpkg using apt, each removal triggered a snapshot, and the snapshots built up until there was no more space for snapshots and hard drive space used was 12.3 GB (yes, as I removed stuff, hard drive space used went up!).

Using my zfsflush.sh code and the code below, I was able to whittle it down to only one large snapshot (as you remove a snapshot, its contents get incorporated into other snapshots with redundancies removed), total hard drive space used is only 5.15 GB and the system is now saving snapshots again.

#!/bin/bash
# Manual zsysctl gc
clear
garbagespace=
kernelscount=
kernelstrim=
chosenpool=rpool

check () {
	echo "These are your pools:"
	sudo zpool list -Ho name
	read -p "Which ZFS pool would you like to work on? " chosenpool
	garbagespace=$(sudo zpool list -o capacity $chosenpool | awk '{if (NR==2) {print substr($1, 1, length($1)-1)}}')
	kernelscount=$(zsysctl show --full | grep -c -C 2 Kernel)
	kernelscount=$((kernelscount-1))
	clear
	echo "Your" $chosenpool "is" $garbagespace% "full."
	echo "You have $kernelscount kernel snapshots available to be removed."
	echo ""
}

empty () {
	garbagespace=$(zpool list | awk -F '[% ]+' '/$chosenpool/ {print $8}')
	kernelscount=$(zsysctl show --full | grep -c -C 2 Kernel)
	kernelscount=$((kernelscount-1))
	if [[ $garbagespace -gt 50 ]]
	then
	echo "How many snapshots would you like to trim?"
	echo "0 - $kernelscount"
			while :; do
			read kernelstrim
			[[ $kernelstrim =~ ^[0-9]+$ ]] || { echo "Enter a valid number!"; continue; }
			if ((kernelstrim >= 0 && kernelstrim <= (kernelscount))); then
			break
			else
			echo "Number out of range, try again!"
			fi
			done
		if [[ $kernelstrim -gt 0 ]]
		then
		clear
		echo ""
		echo "Collecting Garbage"
		echo ""
		sudo zsysctl show --full | grep -C 2 Kernel | grep $chosenpool | tac | grep $chosenpool -m $kernelstrim | awk -F '[_ ]+' /${chosenpool}/''' {print $5}'| xargs -n1 zsysctl state remove -s
		echo ""
		echo "Done."
		echo ""
		elif [[ $kernelstrim = 0 ]]
		then
		clear
		echo ""
		echo "Cancelled" >&2
		echo ""
		fi
	else
	clear
	echo $chosenpool "is less than 50% full"
	echo "Do you still want to trim snapshots?"
	read trimanswer
		if [[ $trimanswer = yes ]] || [[ $trimanswer = y ]]
		then
		clear
		echo "How many snapshots would you like to trim?"
		echo "0 - $kernelscount"
				while :; do
				read kernelstrim
				[[ $kernelstrim =~ ^[0-9]+$ ]] || { echo "Enter a valid number!"; continue; }
				if ((kernelstrim >= 0 && kernelstrim <= (kernelscount))); then
				break
				else
				echo "Number out of range, try again!"
				fi
				done
			if [[ $kernelstrim -gt 0 ]]
			then
			clear
			echo ""
			echo "Collecting Garbage"
			echo ""
			sudo zsysctl show --full | grep -C 2 Kernel | grep $chosenpool | tac | grep $chosenpool -m $kernelstrim | awk -F '[_ ]+' /${chosenpool}/''' {print $5}'| xargs -n1 zsysctl state remove -s
			echo ""
			echo "Done."
			echo ""
			elif [[ $kernelstrim = 0 ]]
			then
			clear
			echo ""
			echo "Cancelled"
			echo ""
			fi
		fi
	fi
}

clear
echo "This script:"
echo "A) Allows you to check space used by snapshots on each pool."
echo "B) Allows you to check how many kernel shapshots you have."
echo "C) Allows you to delete all but one kernel snapshot"
while true; do
	options=("Check Garbage" "Empty Garbage" "Quit")
	echo "Choose an option: "
	select opt in "${options[@]}"; do
		case $REPLY in
			1) check; break ;;
			2) empty; break ;;
			3) break 2 ;;
			*) echo "Invalid Option!" >&2
			esac
	done
done

echo "Exiting..."
sleep 3