Ниже сработало для меня
sed "s|\(^.*\"image\": \"docker.abc.com/abc-pr0000abc:\).*|\ ABCCoreUI-47\",|g" -i Artifactorytest.json
Подстановка процессов — это функция, появившаяся в оболочке Korn в 80-х (в ksh86). В то время он был доступен только в системах, поддерживающих файлы /dev/fd/
.
Позднее эта функция была добавлена в zsh
(с самого начала: 1990 г.) и bash
(в 1993 г.).zsh
использовал временные именованные каналы для его реализации, в то время как bash
использовал /dev/fd/
, где это было возможно, и именованные каналы в противном случае. zsh
переключился на использование /dev/fd/
, где это было доступно в 2.6-beta17
в 1996 году.
Поддержка замены процессов через именованные каналы на системы без /dev/fd
были добавлены в ksh
только в ksh93u+
в 2012 году. Общедоступный клон ksh
не поддерживает Это.
Насколько мне известно, никакая другая борнеподобная оболочка не поддерживает его (rc
, es
, fish
, не борнеподобные оболочки поддерживают его, но с другой синтаксис). yash
имеет конструкцию <(...)
, но она предназначена для перенаправления процесса.
Несмотря на то, что эта функция весьма полезна, она никогда не была стандартизирована POSIX. Таким образом, нельзя ожидать найти его в sh
, поэтому не следует использовать его в скрипте sh
.
Хотя поведение для <(...)
не указано в POSIX (поэтому его сохранение не повредит), bash
отключает функцию при вызове как sh
или при вызове с POSIXLY_CORRECT=1
в его среде.
Итак, если у вас есть скрипт, использующий <(...)
, вы должны использовать оболочку, которая поддерживает эту функцию, чтобы интерпретировать ее как zsh
, bash
или AT&T ksh
(конечно, вам нужно сделать убедитесь, что остальная часть синтаксиса скрипта также совместима с этой оболочкой).
В любом случае:
cat <(cmd)
Можно написать:
cmd | cat
Или просто
cmd
Для команды, отличной от cat
(для которой необходимо передать данные через файл, указанный в качестве аргумента), на системы с /dev/fd/x
, вы всегда можете сделать:
something | that-cmd /dev/stdin
Или, если вам нужно сохранить стандартный ввод that-cmd
:
{ something 3<&- | that-cmd /dev/fd/4 4<&0 <&3 3<&-; } 3<&0