Не анализируйте программно вывод ls .
Вывод ls предназначен для потребления человеком, а не для программирования. Есть несколько способов, которыми непосредственный анализ может прерваться, более или менее тонко. В качестве примера, если я выполню команду, которую вы дали, я получу другой вывод:
$ mkdir -p newdir/folder0{1,2,3}
$ cd newdir
$ ls -1ad */
folder01//
folder02//
folder03//
$
Видишь эти двойные косые черты? Это потому, что я связал ls с ls --color=auto -F .
Лучше использовать инструмент, который предназначен или, по крайней мере, может быть хорошо использован для работы. Я предлагаю обратиться, чтобы find .
$ mkdir -p newdir/folder0{1,2,3}
$ cd newdir
$ find . -mindepth 1 -maxdepth 1 -type d -printf './process_folder.sh sample/"%P"/\n'
./process_folder.sh sample/"folder03"/
./process_folder.sh sample/"folder01"/
./process_folder.sh sample/"folder02"/
$
-mindepth 1 -maxdepth 1 ограничивает поиск только заданные исходные каталоги . в данном случае) и исключает сам начальный каталог. -type d ограничивает соответствие только каталогами. -printf - это действие, которое может выполнить find, которое печатает метаданные о записи каталога, найденной в заданном формате; %P в строке формата заменяется именем найденной записи минус начальный каталог. Смотрите man 1 find для более подробной информации.
Если вы хотите создать скрипт для запуска позже, перенаправьте вывод find в файл:
$ find . -mindepth 1 -maxdepth 1 -type d -printf './process_folder.sh sample/"%P"/\n' > process_folders.sh
Если вам нужна одна команда, которая выполняет команды немедленно, вместо этого перенаправьте вывод команды find в оболочку:
$ find . -mindepth 1 -maxdepth 1 -type d -printf './process_folder.sh sample/"%P"/\n' | bash
Это с гораздо меньшей вероятностью сломается и даст вам то, что вы хотите, не прибегая к причудливой перезаписи вывода команды. Как есть, я подозреваю, что единственное, что может нарушить это, - это если в именах каталогов есть двойные кавычки.