Команда while всегда возвращает пустую строку.
Выражение test почти всегда лучше заключать в фигурные скобки, иначе подстановки команд и переменных в нем будут выполнены до исполнения команды и никакие изменения значений переменных в скрипте body не изменят значения выражения test. Это может привести к возникновению бесконечного цикла. Если же выражение test помещено в фигурные скобки, подстановки в нем выполняются при каждом вычислении (перед каждым выполнением body). Например, если выполнить следующий скрипт с и без скобок вокруг $x<10, то без скобок возникнет бесконечный цикл.