在 bash 或 shell 中,如何在不制作临时文件的情况下将一行文本作为文件输入



>问题 1:

我正在使用自制的命令,由于原因无法更改。该命令需要一个文件名,它将从中读取,如下所示: read-cmd "testtext.txt"我知道可以使用文件作为某些使用输入重定向的命令的输入流,例如 some-cmd < "text.txt",但我想知道是否相反,我是否可以使用一行文本并使 bash 相信它是一个文件,以便我能够做read-cmd "contents of what should be in a text file"

我唯一能做的就是

Example 1:
echo "contents of what should be in a text file" > tmptextfile
read-cmd "tmptextfile"
rm tmptextfile

但是,我真的宁愿不这样做,而只是像文件一样流式传输该行。有没有可能的方法可以做到这一点,或者它会完全依赖于read-cmd的工作方式?

问题2:

然而,一个非常相似的问题,文件不是命令的输入,而是命令选项的输入。所以,read-cmd2 -d "testtext.txt" ...

Example 2:
echo "contents of what should be in options text file" > tmpoptfile
read-cmd2 -d tmpoptfile ...
rm tmpoptfile

我是否可以使用一行文本并使 bash 相信它是一个文件,

是的,您可以使用进程替换来代替:

read-cmd <(echo "contents of what should be in a text file")
进程

替换是一种重定向形式,其中进程的输入或输出(某些命令序列)显示为临时文件。

最新更新