Zsh 进程替换=(列表)在参数中间 我如何在参数的中间使用 =(list)< /Cult>风格的进程替换?< /p>
这项工作:Zsh 进程替换=(列表)在参数中间 我如何在参数的中间使用 =(list)< /Cult>风格的进程替换?< /p>,zsh,Zsh,这项工作: % echo =(echo) /tmp/zshxxxxxx 这也是: % echo =(echo):works /tmp/zshxxxxxx:works 但这并不是: % echo broken:=(echo) zsh: missing end of string 值得注意的是,这也适用于: % echo works:<(echo) works:/proc/self/fd/11 %echo工作:使用参数扩展来“缓冲”进程替换 % echo fixed:${:-=(ech
% echo =(echo)
/tmp/zshxxxxxx
这也是:
% echo =(echo):works
/tmp/zshxxxxxx:works
但这并不是:
% echo broken:=(echo)
zsh: missing end of string
值得注意的是,这也适用于:
% echo works:<(echo)
works:/proc/self/fd/11
%echo工作:使用参数扩展来“缓冲”进程替换
% echo fixed:${:-=(echo)}
fixed:/tmp/zshxxxxxx
我一直在尝试对makefile使用前面的答案,它并不是那么简单,所以这里是我的解决方案
最初的问题是,使用MinGW时,命令行的长度非常有限,如果对象列表很长,它将被截断,因此我需要使用gcc的@file语法,它允许在文件中提供参数
SHELL := /bin/zsh
myprog.exe: very.o long.o list.o of.o obj.o files.o ...
gcc -o $@ @$${:-=(<<< \"$^\")}
SHELL:=/bin/zsh
myprog.exe:very.o long.o list.o of.o obj.o files.o。。。
gcc-o$@$${-=(
myprog.exe: very.o long.o list.o of.o obj.o files.o ...
() { gcc -o $@ @$$1 } =(<<< "$^")