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