Передача от удара с оболочкой пехотинца

какую версию Python делают Вам установили его. проверить python -V

перед выполнением ./configure, удостоверьтесь, что Вам завершили следующие предпосылки.

* GCC 4.2 or newer
* Python 2.6 or 2.7
* GNU Make 3.81 or newer
* libexecinfo (FreeBSD and OpenBSD only)
5
13.07.2014, 09:44
1 ответ

Теперь я остановился на этой версии меньше:

#!/bin/bash

in=/tmp/grunt_in
out=/tmp/grunt_out
err=/tmp/grunt_err

if [ ! -p $in ]
then
    mkfifo $in
    mkfifo $out
    mkfifo $err
    { script -q -c "pig 1>$out 2>$err" <>$in; rm $in $out $err; } &
fi

{
    echo "fs $*"
    echo
    echo "-- end"
} >$in
cat $err >&2 &
catpid=$!
sed -n -u '/^grunt> -- end/q;/^grunt>/d;p' <$out
kill $catpid

Поэтому я просто перенаправляю stderr внутри команды script . Я также заменил круглые скобки фигурными и удалил disown , потому что не видел в этом никаких преимуществ. Я также заменил $ err на FIFO, чтобы иметь возможность вывести его раньше, но это также добавляет некоторые сложности, чтобы убить кота .

Пока это работает довольно хорошо , за исключением , что когда я усекаю вывод, пропуская его через head , я получаю усеченный или дополнительный вывод в следующей команде. По-видимому, мне нужен способ правильно промыть именованные каналы. Буду рад, если у кого-нибудь есть подсказки.

1
27.01.2020, 20:43

Теги

Похожие вопросы