Передача по каналу данных к stdin процесса, не вызывая EOF позже

Если non-sed решение будет приемлемо, то этот отрывок Perl сделает задание:

$ echo "$input" | perl -ne 'chomp; /^\s*(.+?)\s+(.+)$/ && do { $v=`echo "$2"`; chomp($v); print "k=<$1> v=<$v>\n"}'
33
05.12.2013, 21:57
2 ответа

Найденный этим умным ответом в подобном вопросе в stackoverflow

(echo -e "cmd 1\ncmd 2" && cat) | ./shell_executable

Это добивается цели. cat накачает в выводе echo во входной поток shell_executable и ожидают большего количества исходных данных до EOF.

40
27.01.2020, 19:37
  • 1
    @jw013, Вы правы. Я отредактировал сообщение.Спасибо. Когда я экспериментировал w/o круглые скобки, я видел cmd 1 записанный обратно, но не понял, что это должен был быть o/p, сгенерированный cmd 1 –  Gowtham 05.12.2013, 20:53
  • 2
    ЭТО РАБОТАЕТ ПОТРЯСАЮЩЕЕ! Вы просто сохранили меня тонна времени.Спасибо!! –  jaggedsoft 04.11.2016, 12:55

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

Если никакая такая опция не существует, можно также попробовать следующее:

cat custom_commands_file - | ./shell_executable

cat интерпретирует - как stdin.

22
27.01.2020, 19:37

Теги

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