Answers:
您的源命令需要一个文件参数。您可以在某些shell中使用进程替换来获取它,这是因为以相同的方式替换shell ...
arg=$(echo hi)
... echo
命令行上带有子外壳程序输出的位,在进行进程替换的情况下,它用命名文件(通常是/dev/fd/62
某种东西)替换了到文件描述符的链接的子外壳程序。使用管道,文件描述符为0,因此...
echo 'echo hi' | . /dev/fd/0
... /dev/stdin
或视情况而定,在任何linux系统上都可以正常工作-除此以外,还有很多其他系统。您也可以类似地使用此处文档:
. /dev/fd/3 3<<HI
$(echo 'echo hi')
HI
您可以通过以下方式验证您的Shell处理进程替换的方式:
(set -x; readlink <(:))
...打印(以bash
):
+ set +x
+ readlink /dev/fd/63
++ :
pipe:[2212581]
...因此我们可以看到shell正在执行替换操作,并且readlink
正在从一个在文件描述符63上打开的异物管道读取数据。