Для чего используются здесь-документы (например, <<)?

ddсделает все за вас одной командой. Установите размер блока в 1 байт, пропустите 25 первых байтов, подсчитайте до размера файла за вычетом пропуска и конечных байтов.

100 byte file
file.img

dd if=./file.img of=./trimed_file.img bs=1 skip=25 count=73

Двойная проверка чисел может привести к отсчету от 0.

1
25.08.2017, 21:53
1 ответ

Рассмотрим не -оболочки Bash, в которых нет строк Bash here -(<<<"...")или подстановок процессов (<(...)), а также тот факт, что некоторым людям необходимо писать сценарии, демонстрирующие уровень переносимости между системами.

Здесь -документы используются всякий раз, когда многострочный -строковый предварительно -отформатированный фрагмент текста должен быть отправлен утилите, возможно, с выполнением или без выполнения подстановки переменных и т. д. в его содержимом.

В скрипте это может быть полезно для предоставления пользователю некоторого текста, например:

Во избежание утомительного

echo 'Usage:'
echo "    $0 [-a|-b] file [file...]"
echo
echo 'Options:'

(Посмотрите в книге реальный пример того, как кто-то действительно делает это, и попытайтесь отследить, какие строки оцениваются, а какие нет. Это точно не пройдет проверку моего кода:https://books.google.com/books?id=0LvYSCi7QsIC&pg=PA201)

Вместо этого можно просто передать здесь -документ вcat:

cat <<-END_USAGE
        Usage:
            $0 [-a|-b] file [file...]

        Options:
END_USAGE

Это, кстати, также дает возможность сделать определенный объем документирования сценария путем разумного выбора здесь -документа "тэг" (END_USAGE, END_FTPи т.д. ).

Это также полезно для отправки готовых сценариев таким утилитам, как ftpили другим программам, способным считывать последовательности команд со своего стандартного ввода.

Как Bash-программист,вы, очевидно, можете использовать способ работы Bash, но я действительно думаю, что здесь -документы по-прежнему обеспечивают более чистый способ отправки предварительно -отформатированного документа команде, чем использование длинной и бессвязной строки.

Удаление здесь -документов из Bash также сделало бы Bash бесполезным в качестве кандидата на /bin/shв большинстве систем Unix, поскольку это серьезно нарушило бы его соответствие POSIX.

7
27.01.2020, 23:13

Теги

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