У меня есть сценарий ksh, который подходит к моменту, когда он должен выполнить длительную команду. Длительная команда выполняется в сценарии через heredoc. Я хочу выбросить команду (обозначенную в моих примерах ниже как cat) в фоновом режиме, но только после того, как она получит ввод от heredoc. Поскольку «nohup cat ..» завершается мгновенно, и я вижу пустой файл nohup.out, я не уверен, что скрипт выполняет то, что мне нужно, то есть порождает версию команды heredoc nohupped и завершается, оставляякоманда для выполнения сколько угодно времени.
Я использую cat в качестве "команды", так как она тоже сидит там и просто ждет консольного ввода.
Рабочая версия без перестановок:
#!/bin/ksh
cat << EOF
Hello
World
HOw are you!
EOF
Попытка nohup heredoc:
#!/bin/ksh
nohup cat <<EOF
Hello
World
HOw are you!
EOF
Кажется, работает, вывод поступает в nohup.out, как и ожидалось. Но теперь, как бросить это на задний план? Я попробовал нижеследующее (и многие его варианты):
#!/bin/ksh
nohup cat & <<EOF
Hello
World
HOw are you!
EOF
, но nohup.out пуст, поэтому я не уверен, что делает вышеперечисленное. На заднем плане нет бегущей «кошки», которая говорит мне, что она, по крайней мере, побежала и закончила - или, может быть, вообще не бегала. Никаких других вариантов, которые я могу придумать, чтобы попытаться выбросить heredoc в фон из моих сценариев ksh, не работает.
Любые предложения о способах достижения этого с использованием heredoc ?