Рассмотрим следующий сценарий оболочки:
function thetee {
tee data.out
}
function thepipe {
echo "Hello!"
}
while true; do
echo "Hi there!"
done | thetee | thepipe
echo "Done."
Цикл while
- это генератор неограниченного количества строк с текстом «Привет! ! ».
Запуск:
$ sh script.sh
Hello!
Done.
Затем посмотрите на количество строк в data.out
:
$ wc -l data.out
274 data.out
Еще раз:
$ sh script.sh
Hello!
Done.
$ wc -l data.out
236 data.out
Проблемы:
Причины:
Функция thepipe
в моем примере просто выводит эхом строку, а затем завершается, что приводит к сбою канала. На последнем этапе конвейера дальнейшие входные данные не могут быть обработаны, и цикл завершается.
Количество строк, фактически записанных в data.out
, зависит от того, как быстро оболочка сможет запустить конвейер и как быстро функция thepipe
выполнит свою работу и завершит работу. .
В вашем случае это происходит так быстро, что никакой ввод от генератора данных ( mosquitto_sub
) не может поступить в функцию tee
.
Решение:
Сделать так, чтобы функция thepipe
фактически потребляла входные данные :
function thepipe {
echo "Hello!"
cat
}
Это заставит код в моем примере вывести одиночное «Hello!». с последующим бесконечным "Привет!" (которые также сохраняются в data.out
). echo
в конце никогда не будет выполняться.
Следовательно:
Измените определение вашей функции testPipe
аналогичным образом. Например:
function testPipe(){
echo "va"
cat
}
Это приведет к потреблению ввода и отправке его на следующий этап конвейера или, если он находится в конце конвейера, туда, куда стандартный вывод будет перенаправлен после него (с строка, содержащая строку va
в начале потока).
Лучший способ для этого - собрать все ваши контакты в файл vcf, а затем скопировать его между телефонами.
Чтобы импортировать их, вы просто выполните те же шаги, но вы вместо этого выберите импорт.
У меня есть Moto-G, и он мне подходит!
На других телефонах Android --, таких как Verizon Samsungs --, вам, возможно, придется использовать опцию «поделиться», так как опция «Импорт/Экспорт» отсутствует.