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

У Вас есть Debian и работающий теперь в системе? Если так, Вы могли скопировать существующую конфигурацию с /boot/config-<kernel version> к Вашему исходному каталогу ядра и использованию, что как начальная точка. Можно открыть это с make xconfig и отредактируйте его для удовлетворения потребностям.

1
25.10.2011, 23:50
3 ответа

Вы используете 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...
 }
3
27.01.2020, 23:13

Почему Вы просто не передаете по каналу для заголовка-1?

# 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.

3
27.01.2020, 23:13

Это для 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
1
27.01.2020, 23:13

Теги

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