Прочитайте первую строку вывода команды. Команда соединяет меня с удаленным терминалом

Часть 1

Скажем, у меня есть команда my_command которая выводит несколько строк.

Я хотел бы захватить первую строку вывода my_command , как только она будет готова в скрипте, при сохранении my_command .

Я думал, что что-то вроде этого будет работать:

 # Get a code that `my_command` prints in its first line parsed_first_line=`my_command | grep -oEe '[0-9]+'` echo 'Here is the first line ' $parsed_first_line 

но это не так. Вывод эха достигается только после того, как my_command полностью закончил, чего я не хочу.

Часть 2

Вступление в подробности: Imagine my_command – это фактически команда, которая соединяет мою оболочку с удаленной оболочкой. Это каким-то образом изменит наше решение для части 1 ?

В случае, если подробности важны, my_command на самом деле является однострочной командой:

bsub /bin/zsh .

Это команда Platform LSF для Platform LSF которая отправляет задание из машины входа (интерактивная оболочка zsh в нашем случае) в удаленную сетку. Когда отправленное задание получает открытый слот в сетке, LSF отправляет его, предоставляя мне интерактивную оболочку на удаленной машине.

Первое, что делает bsub , – это вывод job ID моего задания в удаленной очереди (это то, на что я надеюсь разобрать мой сценарий), а затем, когда слот открыт, он отправляет мою работу.

Мне интересно, будет ли тривиальное решение части 1 работать для Части 2

3 Solutions collect form web for “Прочитайте первую строку вывода команды. Команда соединяет меня с удаленным терминалом”

Вы используете read для получения одной строки ввода за раз. Вы можете сделать что-то вроде этого:

 my_command | { read line line=$(grep -oEe '[0-9]+'); if [ $line ]; then echo 'Here is the first line ' $line fi #possibly read more from my_command, transfer control to another program via `exec`, etc... } 

Почему бы вам просто не наткнуться на стол?

 # Get a code that `my_command` prints in its first line # parsed_first_line=`my_command | grep -oEe '[0-9]+'` parsed_first_line=$( my_command | head -1 | grep -oEe '[0-9]+' ) echo 'Here is the first line ' $parsed_first_line 

Это также позволяет my_command закончить, но это возвращает только первую строку, которая затем может соответствовать вашему grep.

Это для bash , zsh может быть немного другим:

 #!/bin/bash # We'll need a temporary file. TMPFILE=`mktemp` # Start the process in the background my_command > $TMPFILE & # Get its pid so we can clean up that temp file later. PID=$! # Wait for the first line of output first_line=`head -n1 $TMPFILE | grep -oEe '[0-9]+'` while [ -z "$first_line" ]; do # Don't technically need this, but it'll prevent the system from grinding. sleep 1 first_line=`head -n1 $TMPFILE | grep -oEe '[0-9]+'` done echo Result: "$first_line" # Clean up that temp file. wait $PID rm $TMPFILE 
  • Почему zsh и ksh93 решили быть несоответствующими при сопоставлении с образцом?
  • Можно ли использовать два символа (например, tm) в режиме вставки в zsh для привязки команды?
  • zsh нечувствительность к регистру в середине слова
  • Заполнение поддельных каталогов avfs в zsh
  • Вставка текста в zsh в режиме vi
  • Элементы списка с пробелами в zsh
  • Поиск файлов в ZSH не работает
  • $ {! FOO} и zsh
  • Right Distro для текстовых потребностей
  • Может ли любая оболочка использовать интерактивный поиск на уровне аргументов?
  • Как остановить bash из файлов с проверкой синтаксиса?
  • Interesting Posts

    Как изменить символ курсора на специальный символ юникода?

    Почему команда копирования редактора vi называется Yank?

    маршрутизация между пространствами имен linux

    Узкие места в скорости USB (особенно при работе виртуальной машины)

    Новая строка подсказки автоматически не помещается в командную строку после кода выхода

    Невозможно вырезать строку из файла под строкой другого файла

    Разрешать ли пользователям домена права на акции cifs?

    Спрячьте, где я нахожусь?

    Предварительная обработка текста. Как запустить сразу несколько скриптов

    Как настроить несколько интерфейсов, связанных мостом на eth0?

    Как изменить размер экрана входа в систему, Linux Mint

    Главный ключ, действующий странно в bash (tty и X) на длинных входных строках

    Apache не скрывает токены сервера / подпись

    bash / sh для замены текста между некоторыми тегами / строками в текстовом файле

    Linux-дистрибутив, поддерживающий сенсорные панели и acpi на Macbook Pros

    Linux и Unix - лучшая ОС в мире.