gpt4 book ai didi

linux - 将一个命令的输出用于另一个

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:05 25 4
gpt4 key购买 nike

在我的本地机器上,我的可执行文件存储在

.stack-work/install/x86_64-osx/lts-13.0/8.6.3/bin/nonosolver-exe

在我的云实例中,它存储在

./.stack-work/install/x86_64-linux-tinfo6/lts-13.0/8.6.3/bin/nonosolver-exe

因此可执行文件将始终位于 ./.stack-work/install/{??}/nonosolver-exe 中,具体取决于我使用的机器和 GHC 版本。所以在我的 make 文件中,我正在使用

find ./.stack-work/install -name nonosolver-exe

找到我的可执行文件。


如何获取 find 的结果以使用 setsid 启动守护进程(取自 here ):

setsid {path to executable} >/dev/null 2>&1 < /dev/null &

我试过了(取自 here ):

find ./.stack-work/install -name nonosolver-exe -exec setsid {} >/dev/null 2>&1 < /dev/null &

没用

最佳答案

shell

使用 $(...) 将一个命令的标准输出作为字符串插入到另一个命令中:

setsid "$(find ./.stack-work/install -name nonosolver-exe)" >/dev/null 2>&1 < /dev/null &

如果您最终找到的匹配项不是一个,这将导致意想不到的问题。您可以先存储到变量中以进行错误检查:

exe_path="$(find ./.stack-work/install -name nonosolver-exe)"
# check non-empty and no newlines
setsid "${exe_path}" >/dev/null 2>&1 < /dev/null &

生成文件

与 bash $(...) 构造等效的 makefile 是 $(shell ...)。变量用 $(...) 展开,而不是 ${...}:

setsid "$(shell find ./.stack-work/install -name nonosolver-exe)" >/dev/null 2>&1 < /dev/null

或者

EXE_PATH = $(shell find ./.stack-work/install -name nonosolver-exe)
setsid "$(EXE_PATH)" >/dev/null 2>&1 < /dev/null

关于linux - 将一个命令的输出用于另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54264716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com