想要的示例:此处为 fd 的字符串

想要的示例:此处为 fd 的字符串

man bash具有此重定向功能:[n]<<<word.有了这样的解释:

The result is supplied as a single string, with a  newline  appended,
to the command on its standard input (or file descriptor n if n is specified).

我正在努力让它发挥作用,但无法真正找到解决方案。

$ exec 4>out
$ 4<<<asdfwefwef

这似乎没有起到任何预期的作用。

这应该如何运作?

答案1

困难在于找到一个从 fd4 读取的标准实用程序。这说明 fd4 获取字符串:

$ ( cat 0<&4 ) 4<<<'Hello, World!'
Hello, World!
$ 

或者,您可以使用read -u将字符串走私到脚本中,而不使用 stdin 或参数:

$ read -u 4 FOO 4<<<42 && echo $FOO
42
$ 

在实践中,读取将被深埋在脚本中,并且脚本将从命令行继承 fd4 重定向。

$ cat Fd4
#! /bin/bash

#.. Read from stdin
read -r A B C
printf '%s %s %s %s %s\n' $A $B $C $D $E

#.. Read from here string.
read -r -u4 D B E
printf '%s %s %s %s %s\n' $A $B $C $D $E


$ echo stdin gets this | ./Fd4 4<<<'fd4 sees that'
stdin gets this  
stdin sees this fd4 that
$ 

相关内容