我在 makefile 中的 shell function 遇到了问题。做法如下:
允许我捕获
这样做:
允许我捕获
如何捕获 shell 本身的
这个 makefile 演示了问题:
它会产生:
我想将
var := $(shell some-command)
允许我捕获
some-command
的 stdout
。这样做:
var := $(shell some-command 2>&1)
允许我捕获
some-command
的 stdout
和 stderr
。如何捕获 shell 本身的
stderr
?这个 makefile 演示了问题:
var1 := $(shell date 2>&1)
var2 := $(shell ls aaa 2>&1)
var3 := $(shell a-command-which-does-not-exist 2>&1)
show-me:
@echo var1: \"$(var1)\"
@echo var2: \"$(var2)\"
@echo var3: \"$(var3)\"
它会产生:
/bin/sh: 1: a-command-which-does-not-exist: not found
var1: "So 6. Feb 00:37:05 CET 2022"
var2: "ls: cannot access aaa: No such file or directory"
var3: ""
我想将
/bin/sh: 1: a-command-which-does-not-exist: not found
捕获到变量 var3
中,这可能吗?
stderr
未被捕获。你发布的版本在逻辑上似乎是正确的,但对我来说不起作用(GNU Make 4.2.1
)。 - blueFast$(shell $(SHELL) -c bad-command 2>&1)
。然而,这也不起作用,我不确定为什么……嗯…… - MadScientist