Shell:是否可以将字符串作为文件提供给命令?

Shell:是否可以将字符串作为文件提供给命令?

假设我们有一个命令,

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

相关内容