Пробелы как разрывы строки от встроенного для команды цикла

Просто запишите презентацию с помощью любимого редактора обогащенного текста (который может быть AbiWord или Office Libre). Просто измените размер страницы и размер шрифта.

Office Libre может произвести .pdf (дополнительно, можно встроить шрифты), который может использоваться для проектирования на большом экране или для печати.

Почему Вам нужно специальное программное обеспечение?

5
08.10.2011, 23:05
2 ответа

Проверьте страницу справочника для своей оболочки, смотрящей конкретно на глобальную переменную IFS.

А именно, сделайте это:

IFS=$(echo -en "\t\n\0")

3
27.01.2020, 20:37
  • 1
    | hexdump-c показал $IFS для содержания "\t \n \0 \n", Но я все еще смущен относительно того, что я имею помешать пробелам интерпретироваться как новые строки? попытка –  CuriosityCasualty 08.10.2011, 23:17
  • 2
    hexdump-C существует на самом деле 5 символов-c, отображается, первое '' –  frogstarr78 08.10.2011, 23:20
  • 3
    Короче говоря, пробел включен в переменную IFS. Предотвратить тот сброс IFS: IFS=$(echo -en "\t\n\0") –  frogstarr78 08.10.2011, 23:21
  • 4
    @frogstarr78 - Нет никакой потребности использовать эхо для этого, в ударе, просто использовать $'\t\n\0'. –  Chris Down 08.10.2011, 23:53
  • 5
    @ChrisDown я не знал. Спасибо –  frogstarr78 09.10.2011, 01:25

Ваша замена команды вызывает разделение слова на своем выводе, на основе IFS. А именно, в этом случае это разделяет на пробелах. Не анализируйте вывод find. Вместо этого сделайте это:

for file in *.txt; do
    head -1 "${file}"
done

Wiki Wooledge также имеет некоторую хорошую информацию об этой проблеме здесь.

5
27.01.2020, 20:37
  • 1
    Это не повредится: set -f; find . -name '*.txt' -print0 | while IFS= read -r -d $'\0' file; do head -1 "$file" ;done ... set -f отключает расширение –  Peter.O 09.10.2011, 18:58

Теги

Похожие вопросы