rytp баÑбоÑÐºÐ¸Ð½Ñ Ð±ÐµÐ· маÑа VIDEOMEGA RU
Оглавление:
При написании сценариев оболочки вы можете оказаться в ситуации, когда вам нужно передать многострочный блок текста или кода интерактивной команде, такой как
tee
,
cat
или
sftp
.
В Bash и других оболочках, таких как Zsh, документ Here (Heredoc) - это тип перенаправления, который позволяет передавать в команду несколько строк ввода.
Синтаксис написания HereDoc принимает следующую форму:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- Первая строка начинается с необязательной команды, за которой следует специальный оператор перенаправления
<<и идентификатор разделителя.- Вы можете использовать любую строку в качестве идентификатора-разделителя, наиболее часто используемым является EOF или END. Если идентификатор-разделитель не заключен в кавычки, оболочка подставит все переменные, команды и специальные символы перед передачей строк документа здесь в команду. знак минуса для оператора перенаправления
<<-, приведет к игнорированию всех начальных символов табуляции. Это позволяет использовать отступы при написании здесь документов в сценариях оболочки. Не допускаются начальные пробельные символы, только табуляция.
Блок here-document может содержать строки, переменные, команды и любые другие типы ввода. Последняя строка заканчивается идентификатором-разделителем. Пробелы перед разделителем не допускаются. - Вы можете использовать любую строку в качестве идентификатора-разделителя, наиболее часто используемым является EOF или END. Если идентификатор-разделитель не заключен в кавычки, оболочка подставит все переменные, команды и специальные символы перед передачей строк документа здесь в команду. знак минуса для оператора перенаправления
Основные примеры Heredoc
В этом разделе мы рассмотрим некоторые основные примеры использования heredoc.
Heredoc чаще всего используется в сочетании с командой cat.
В следующем примере мы передаем две строки текста, содержащие переменную окружения и команду
cat
используя документ here.
cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF
Как видно из вывода ниже, переменные и выходные данные команды заменяются:
The current working directory is: /home/linuxize You are logged in as: linuxize
Посмотрим, что произойдет, если мы заключим разделитель в одинарные или двойные кавычки.
cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF
Вы можете заметить, что когда в качестве разделителя указывается в кавычках, расширение параметров не выполняется, а подстановка команд выполняется оболочкой.
The current working directory is: $PWD You are logged in as: $(whoami)
if true; then cat <<- EOF Line with a leading tab. EOF fi
Line with a leading tab.
Вместо отображения вывода на экране вы можете перенаправить его в файл, используя операторы
>
,
>>
.
cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
Если файл file.txt не существует, он будет создан. При использовании
>
файл будет перезаписан, а
>>
добавит вывод в файл.
Ввод heredoc также может быть передан по конвейеру. В следующем примере команда
sed
заменит все вхождения символа
l
на
e
:
cat <<'EOF' | sed 's/l/e/g' Hello World EOF
Heeeo Wored
Чтобы записать данные в файл:
cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF
Использование Heredoc с SSH
Использование Heredoc - это один из самых удобных и простых способов выполнения нескольких команд в удаленной системе через SSH.
При использовании разделителя без кавычек убедитесь, что вы экранировали все переменные, команды и специальные символы, иначе они будут интерполированы локально:
ssh -T [email protected] << EOF echo "The current local working directory is: $PWD" echo "The current remote working directory is: \$PWD" EOF
The current local working directory is: /home/linuxize The current remote working directory is: /home/user
Вы также можете настроить аутентификацию на основе ключей SSH и подключаться к серверам Linux без ввода пароля.
Вывод
Из этого руководства вы узнали, что такое
heredoc
и как его использовать в сценариях оболочки.
Баш за петлю
В скриптах Bash есть 3 базовых конструкции цикла: для цикла, цикла и и до цикла. В этом уроке мы рассмотрим основы циклов for в Bash, а также операторы break и continue для изменения потока цикла.
Функции Баш
Функция Bash - это, по сути, набор команд, которые можно вызывать множество раз. Цель функции - помочь вам сделать ваши bash-скрипты более читабельными и избежать повторного написания одного и того же кода.
Баш Шебанг
Последовательность символов (!) Называется shebang и используется, чтобы сообщить операционной системе, какой интерпретатор использовать для анализа остальной части файла.







