LINUX.ORG.RU

Можно ли сохранить лог компиляции и код возврата?

 


0

1
function f() {
    COMPILE_LOG=$(sudo make install clean 2>&1)
    echo $?
    echo "${COMPILE_LOG}"
}

out:

2
slock build options:
CFLAGS   = -std=c99 -pedantic -Wall -Os -I. -I/usr/include -I/usr/X11R6/include -DVERSION="1.4" -D_DEFAULT_SOURCE -DHAVE_SHADOW_H
LDFLAGS  = -s -L/usr/lib -lc -lcrypt -L/usr/X11R6/lib -lX11 -lXext -lXrandr
CC       = cc
CC slock.c
slock.c:18:10: fatal error: X11/extensions/Xrandr.h: No such file or directory
   18 | #include <X11/extensions/Xrandr.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:19: slock.o] Error 1

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

function f() {
    local COMPILE_LOG=$(sudo make install clean 2>&1)
    echo $?
    echo "${COMPILE_LOG}"
}

out:

0
slock build options:
CFLAGS   = -std=c99 -pedantic -Wall -Os -I. -I/usr/include -I/usr/X11R6/include -DVERSION="1.4" -D_DEFAULT_SOURCE -DHAVE_SHADOW_H
LDFLAGS  = -s -L/usr/lib -lc -lcrypt -L/usr/X11R6/lib -lX11 -lXext -lXrandr
CC       = cc
CC slock.c
slock.c:18:10: fatal error: X11/extensions/Xrandr.h: No such file or directory
   18 | #include <X11/extensions/Xrandr.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:19: slock.o] Error 1

Как видим, некорректное значение 0

★★★★

Последнее исправление: bryak (всего исправлений: 2)

Локальные переменные не наследуются в дочерних процессах. Это основы. А у тебя там мало того, что сабшелл, так ещё и судо.

Поэтому либо используем глобальные переменные, либо временные файлы (фу!), либо передаём через конвеер.

Aceler ★★★★★
()
Ответ на: комментарий от legolegs

Зачем нужны такие переменные и вообще зачем нужен такой язык, в котором тебя будут ограничивать какие данные класть в переменные? Вот настоящий вопрос.

ugoday ★★★★★
()
Ответ на: комментарий от bryak

Я бы скопировал лог компиляции во временный файл. В случае успеха файл удаляется. В случае неудачи echo Компиляция обламалася. Подробности см /tmp/my-prog-compile.log.gz.

ugoday ★★★★★
()