Описание тега process-substitution

Process substitution is a form of inter-process communication that allows the input or output of a command to appear as a file. The command is substituted in-line, where a file name would normally occur, by the command shell. This allows programs that normally only accept files to directly read from or write to another program.
0 ответов

Процесс подстановки с pv приводит к пустому файлу

У меня проблемы с получением pv команда работать с tar используя замену процесса Bash. я могу использовать pv вот так и работает: $ tar cvf - dir | pv > file.tar dir/ dir/b dir/a 10KiB 0:00:00 [16.9MiB/s] [<=> ] $ ls -s file.tar 12 file.tar…
04 янв '17 в 00:47
1 ответ

Переменная потеря в перенаправленном Bash во время цикла

У меня есть следующий код for ip in $(ifconfig | awk -F ":" '/inet addr/{split($2,a," ");print a[1]}') do bytesin=0; bytesout=0; while read line do if [[ $(echo ${line} | awk '{print $1}') == ${ip} ]] then increment=$(echo ${line} | awk '{print $4}'…
20 окт '13 в 13:54
2 ответа

Эмуляция именованных процессов

Допустим, у меня есть большой GZIP-файл data.txt.gz, но часто разархивированную версию нужно давать программе. Конечно, вместо создания отдельного без упаковки data.txt можно использовать синтаксис замены процесса: ./program <(zcat data.txt.gz) О…
05 июн '14 в 12:43
4 ответа

Подстановка процесса - Node.js child_process

Я пытаюсь запустить дочерний процесс для изменения файла (в два этапа) перед чтением измененного содержимого из stdout. Я пытаюсь сделать это, используя процесс подстановки, который отлично работает в Bash, но не когда я пытаюсь это с узла. Это врод…
1 ответ

Процесс подстановки работает в bash, но не в zsh

Я пытаюсь скормить цикл, используя процесс подстановки. logFile=$1 declare -A frequencyMap while read line do name=$(echo $line | awk '{print $11}') if [ ${frequencyMap[$name]+_} ] then frequencyMap[$name]=$(expr ${frequencyMap[$name]} + 1) else fre…
27 сен '15 в 03:06
1 ответ

Процесс замещения, /dev/fd/63

У меня есть сценарий, который принимает имя файла в качестве ввода в $1, и обрабатывает его... и создает выходной файл как ${1}.output.log, и он отлично работает. например, если я попробовал./myscript filename.txt Он обработает и сгенерирует выходно…
1 ответ

Перенаправление Bash: именованные каналы и EOF

Возьмите следующий код: rm -f pipe mkfifo pipe foo () { echo 1 sleep 1 echo 2 } #1 exec 3< <(foo &) cat <&3 # works #2 foo >pipe & cat <pipe # works #3 exec 3<>pipe foo >&3 & cat <&3 # hangs #4 -- u…
3 ответа

Использование процесса замены Bash с циклом tee и while

Я хочу использовать вложенные процессы с тройником в цикле while. while read line; do #process line echo "--$line" done < <(cat sample.file | tee >(grep "SPECLINE") | grep "LINESTOPROCESS") Поэтому мне нужно: все строки в sample.file, котор…
06 янв '19 в 16:45
1 ответ

Ловушка bash и замена процесса

ОБНОВИТЬ Я использовал гораздо лучший тестовый пример для ответа, который я написал. Я добавляю сюда обновленный тестовый случай, если кто-то захочет поэкспериментировать: #!/bin/bash mypts="$( tty )" # main traps trap "echo 'trapped SIGCHLD' >$…
30 окт '17 в 10:10
1 ответ

Как работает "var=>(...) somecommand"?

#1 f() { cat "$1" >"$x" } #2 x=>(tr '[:lower:]' '[:upper:]') f <(echo 'hi there') В #2 какая часть исполняется первой? x=>(tr '[:lower:]' '[:upper:]') или е <(echo 'hi there'), #2 является составным соединением или единственной коман…
18 сен '17 в 12:36
2 ответа

Как я могу использовать строки замены процесса в BASH?

Я знаю, что могу сделать что-то вроде cat <(cat somefile) Но я хочу создать строку <(), Так: for file in *.file; do mySubs="${mySubs} <(cat ${file})" done cat ${mySubs} #cat <(cat 1.file) <(cat 2.file) ... <(cat something.file) Без…
18 дек '18 в 20:11
1 ответ

Как добавить параметры командной строки в скрипт, скачанный с помощью curl

У меня есть следующее в моем скрипте CI.,, - bash <(curl -s https://codecov.io/bash -gtest) Какой правильный синтаксис для получения -g немного работает? Конечно - curl -s https://codecov.io/bash >> codecov - chmod +x codecov - ./codecov -g…
22 май '16 в 20:02
2 ответа

Патч на стандартный вывод с заменой процесса

Я пытаюсь сделать что-то вроде: patch <( zcat data.201301.gz ) patch_file.diff -o /dev/stdout результат, который я получаю: File /dev/fd/63 is not a regular file -- refusing to patch 4504 out of 4504 hunks ignored -- saving rejects to file /dev/s…
16 июл '14 в 11:28
1 ответ

Как распечатать результат команды, а также количество результатов?

Я должен напечатать все файлы, содержащие запрос, указанный в качестве аргумента консоли, следующая строка делает это find . "$path" -type f -name "*$key*" -print Однако я также хотел бы получить общее количество файлов, но делать это: find . "$path…
28 май '17 в 15:09
3 ответа

Как найти следующий доступный файловый дескриптор в Bash?

Как я могу узнать, используется ли дескриптор файла в Bash? Например, если у меня есть скрипт, который читает, пишет и закрывает fd 3, например exec 3< <(some command here) ... cat <&3 exec 3>&- Каков наилучший способ убедиться, …
1 ответ

Не в состоянии читать строки из запущенного процесса в Bash

Используя подстановку процесса, мы можем получить все строки вывода команды. # Echoes every seconds using process substitution while read line; do echo $line done < <(for i in $(seq 1 10); do echo $i && sleep 1; done) Таким же образом,…
16 ноя '15 в 06:44
1 ответ

Как перенаправить в процесс подстановки?

Я попытался перенаправить стандартную ошибку в файл с ограниченными разрешениями. Вот что я сделал: exec 2> >(umask 077; exec > stderr.log) Идея заключалась в том, чтобы перенаправить стандартную ошибку в процесс, изменить маску и еще раз п…
24 авг '16 в 10:41
2 ответа

Некоторые программы не допускают подстановку процессов для входных файлов?

Я пытаюсь использовать процесс подстановки для входного файла в программу, и это не работает. Это потому, что некоторые программы не допускают подстановку процессов для входных файлов? Следующее не работает: bash -c "cat meaningless_name" >sequen…
25 ноя '10 в 06:02
1 ответ

Почему команда исходного кода не работает с подстановкой процессов в bash 3.2?

У меня есть следующий сценарий оболочки: cat <(echo foo) source <(echo bar=bar) echo $bar Однако в GNU bash 3.2 и 4.3 это работает по-разному, как показано ниже: $ /bin/bash foo.sh foo 3.2.53(1)-release $ /usr/local/bin/bash foo.sh foo bar 4.3…
2 ответа

Here Strings: Что здесь происходит?

Я относительно новичок в написании сценариев оболочки, но не в программировании, хотя и признаюсь, что некоторое время отсутствовал в игре. Пытаясь понять причину ошибки в скрипте Bash, я привел три коротких примера моего использования подстановки п…