Получило распорстранение в языках программирования из Unix shell-ов - для переопределения инпут потока команды не из файла, а прямо в консоли, - в языках программирования это мультистрочность строки.
ANY_NAME_WHICH_SPECIFIED_AS_DELIMETER - традиционно чаще всего выбираются EOF, END, DELIM; ну а вообще мы можем поставить все что угодно
Пробел не имеет значения мы можем и без пробела написать <<EOF
По-умолчанию переменные среды и команды вызываются в теле текста:
Чтобы это вырубить обвертываем ограничитель единичными кавычками:
Heredoc
tr a-z A-Z << ANY_NAME_WHICH_SPECIFIED_AS_DELIMETER one two three four five six ANY_NAME_WHICH_SPECIFIED_AS_DELIMETER
ANY_NAME_WHICH_SPECIFIED_AS_DELIMETER - традиционно чаще всего выбираются EOF, END, DELIM; ну а вообще мы можем поставить все что угодно
Пробел не имеет значения мы можем и без пробела написать <<EOF
tr a-z A-Z <<- END
one two three
four five six
END
<<- означает, что нужно игнорировать встречающиеся во вводе табы.
По-умолчанию переменные среды и команды вызываются в теле текста:
cat <<EOF \$ Working dir "$PWD" `pwd` EOF $ Working dir "/home/user" /home/user
Чтобы это вырубить обвертываем ограничитель единичными кавычками:
cat <<'EOF' \$ Working dir "$PWD" `pwd` EOF $ Working dir "$PWD" `pwd`
Here string
Переопределение идет строкой, если без одинарных ковычек, то словом.cat <<'EOF' tr a-z A-Z <<< one
tr a-z A-Z <<< 'one two three'Мультистрочность тоже работает:
tr a-z A-Z <<< ' one two three 'Тогда возникает вопрос в чем отличие от here document? Отличие в том, что тут переносы строки сохраняются в нача и конце, в heredoc - нет:
ONE TWO THREEHere string полезен для команд которые требуют коротнкий инпут, например калькулятор:
bc <<< 2^10
Комментариев нет:
Отправить комментарий