Intereting Posts
Centos – Sendmail smtp smarthost с аутентификацией Выполнение команды «ip netns exec» с использованием nsid, полученного из «ip netns list-id» Какой дистрибутив Linux похож на HP-UX? Выполнение произвольной команды Задержать сценарий инициализации до завершения другого процесса? sshfs mount, sudo получает разрешение отказано Как автоматизировать повторяющийся процесс с использованием сценариев оболочки CentOS, как обновить версию Ant до 1.8.x и выше? Ручная установка pdftk не может найти библиотеку libgcj Как исправить ошибку "не удалось добавить i915-компонентный мастер (-19)" Как заставить pam_exec запускать скрипт в качестве текущего пользователя? gem install bundler, комплект не работает «Визуализировать» текстовый файл с возвратом каретки (^ M) и сохранять вывод в файл Как безопасно скопировать 5 самых последних файлов в локальный каталог Управляющие символы в терминале с активным процессом переднего плана

Как выглядит команда «filename.txt» при передаче имени файла в команду

У меня есть сценарий, где у меня есть command < filename.txt поэтому я могу передать содержимое filename.txt и использовать его в command . Но скажу, что я хочу извлечь содержимое из файла и просто использовать их в одном действии командной строки. Как это будет выглядеть?

Скажем, содержимое filename.txt выглядит следующим образом:

 To: me@domain.com Message: Some message 

Я пробовал такие вещи, как command "To: me@domain.com\n Message: Some message" без везения. Как выглядит содержимое текстового файла, когда они обрабатываются в команде таким образом?

В вашем сценарии command считывает со своего стандартного ввода; если только он не примет какой-либо другой способ предоставления этой информации, вам необходимо продолжать подавать его таким образом. Поэтому, если вы не хотите использовать файл, используйте printf с каналом:

 printf "To: me@domain.com\nMessage: Some message" | command 

Новые оболочки, такие как bash и ksh93, поддерживают «здесь документы» и «здесь строки», если вы хотите, чтобы буквальные строки передавались вашей команде в STDIN. Фактически, большинство оболочек поддерживают здесь документы.

Здесь строка:

 command <<<"some string" 

Здесь документ:

 command <<END this will be on command's STDIN until an END is encountered by itself END 

В этом документе используется вещь после << в качестве терминатора, сигнализирующая о конце документа. Терминатор должен произойти сам по себе в начале строки. Различные оболочки имеют несколько более благоприятные возможности, например, при необходимости удалять ведущие вкладки, разные кавычки на терминаторе, контролирующие, будут ли расширены метасимволы и метасимволы оболочки, и т. Д. За подробной информацией обратитесь к man-странице вашей оболочки.

В любом случае вы можете легко протестировать обе эти структуры, используя команду cat - как команду. Я лично часто использую здесь строки.