假设我们有一个命令,
eval-some-language —-path=<filename>
我们想做这样的事情:
eval-some-language —-path=“say hello world!
exit 3”
我认为以下解决方案可能适用于一个文件,并且如果 stdin 不用于其他用途:
eval-some-language —-path=“/dev/stdin” <<<“say hello ...”
这适用于所有命令吗?它有多便携? (苹果系统?)
还有其他方法可以做到这一点吗?
更新:如果文件需要可执行,我的解决方案、接受的答案和 zsh 的 =() 都不起作用。 :(
答案1
尝试这个:
eval-some-language --path=<(echo "hello world")
<() 将生成一个文件描述符,与命令的输出绑定并将其作为 /dev/fd/xxx 传递。例如:
$ echo <(echo aaa)
/dev/fd/63
$ echo <(echo test) <(echo second test)
/dev/fd/63 /dev/fd/62
有关更多信息,请参阅“过程替代”部分man bash