Многие люди показали, как сохранить пробелы при чтении строки в bash. Но у меня есть алгоритм, основанный на символах, который должен обрабатывать каждый конец каждого символа отдельно - включенные пробелы. К сожалению, я не могу получить bash, чтобы прочитать пробел .Как читать пробел в bash - читать не будет
while read -r -n 1 c; do printf "[%c]" "$c" done <<< "mark spitz" printf "[ ]\n"
дает
[m][a][r][k][][s][p][i][t][z][][ ]
Я взломал свой путь вокруг этого, но было бы неплохо, чтобы выяснить, как читать один любой одного символа. Да, попытался установить IFS и т.д.
Ничего себе. У меня, должно быть, была вторая проблема, не ссылаясь на переменную в присваивании или выходе (whitespace - это моя ошибка в bash), и когда я попытался это исправить, это произошло из-за второй проблемы. Показывает ценность сокращения тестов до минимума - вместо того, чтобы пытаться исправить в вашей большой программе! – user3546411
BTW с использованием 'while read do done <<<" input "' важно, потому что я остаюсь в одной оболочке и имею доступ к пространству имен оболочки. Вход 'printf" | в то время как make done порождает подоболочку, которая имеет как другое пространство имен и не может легко перемещать данные назад и вперед между блоком do и вызывающей родительской оболочкой. – user3546411