Ваша командная строка в основном правильная, но вам стоит лишь немного изменить конструкцию.
Основная проблема заключается в том, что строки в двойных кавычках расширяются вашей локальной оболочкой, и поэтому $(...) части будут оцениваться в вашей локальной системе. Чтобы передать их в удаленную систему, вы должны заключить скрипт в одинарные кавычки.
У вас также есть встроенные кавычки. В вашем оригинальном сценарии есть аргументы для двух echos. Если же вы измените внешнюю кавычку на одинарную кавычку, это будет скрипт awk. Это эффективно приводит к тому, что кавычки опускаются, что не беспокоит echos, но это испортит скрипт awk, так как знак "больше чем" станет перенаправлением вывода. Поэтому после изменения внешних кавычек на одинарные, измените их на двойные.
Вот ваш скрипт с исправленной цитатой. У скрипта могут быть другие проблемы. Здесь исправлен синтаксис. Посмотрите:
#!/bin/bash
ssh -t test@192.168.94.139 'cd /var/www/test.com/backup ;
if [ $(ls | wc -l) -lt 3 ]
then
echo "Less"
else [ $(ls -t *.tgz|awk "NR >3"|xargs rm -f) ]
echo "deleted"
fi'