在 bash 或 shell 中,如何在不创建临时文件的情况下将一行文本作为文件输入?
In bash or shell, how does one input a line of text as a file without making a temp file?
问题 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
whether I can use a line of text and make bash believe it's a file,
是的,您可以为此使用 process substitution:
read-cmd <(echo "contents of what should be in a text file")
进程替换是一种重定向形式,其中进程的输入或输出(一些命令序列)显示为临时文件。
问题 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
whether I can use a line of text and make bash believe it's a file,
是的,您可以为此使用 process substitution:
read-cmd <(echo "contents of what should be in a text file")
进程替换是一种重定向形式,其中进程的输入或输出(一些命令序列)显示为临时文件。