Используйте вывод команды для другого - PullRequest
0 голосов
/ 19 января 2019

На моей локальной машине мой исполняемый файл хранится в

.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 (взято из здесь ):

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

Я пытался (взято из здесь ):

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

безрезультатно

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Использование трубы и xargs:

find ./.stack-work/install -name nonosolver-exe -print0 | xargs -0 -I{} setsid "{}" >/dev/null 2>&1 < /dev/null &
0 голосов
/ 19 января 2019

Оболочка

Используйте $(...), чтобы вставить стандартный вывод одной команды в виде строки:

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 &

Makefile

Makefile, эквивалентный конструкции bash $(...), равен $(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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...