如何通过管道将rjp2tif输出的TIFF路径传入ImageJ并打开对应文件?
问题原因
macOS 下的 open 命令默认不读取管道传递的内容作为待打开文件的路径,你用到的 -f 参数的作用是将管道输入的内容直接作为纯文本在目标应用中打开,所以才会弹出显示路径的文本窗口,而非将输入内容识别为文件路径去读取对应的文件。
可用解决方案
方案1:命令替换(最简洁,推荐)
直接用命令替换将 rjp2tif 的输出结果作为 open 的参数传入即可:
open -a ImageJ "$(rjp2tif /path/to/rjpeg)"
该写法会优先执行 rjp2tif 命令,把输出的 TIFF 文件路径完整传递给 open 命令作为打开参数,路径带空格也可以正常识别。
方案2:管道配合 xargs(需要保留管道结构时使用)
如果你的场景需要保留管道的写法,可以搭配 xargs 把管道传递的路径转为 open 的入参:
rjp2tif /path/to/rjpeg | xargs -I {} open -a ImageJ {}
其中 -I {} 会把管道输入的内容替换到 {} 的位置,作为文件路径参数传给 open,不会被识别为纯文本内容。
内容的提问来源于stack exchange,提问作者Jim Merkel
相关产品推荐
相关产品推荐

