Bash 将数据导入shell命令,该命令需要文件名

Bash 将数据导入shell命令,该命令需要文件名,bash,shell,Bash,Shell,假设我有一个shell命令foo,它需要一个像bar.txt这样的文件作为参数,我想把一行文件传递给foo,然后像这样擦除它: echo "This is a one line file" > bar.txt foo bar.txt rm bar.txt 是否有一种方法可以在一行shell脚本中完成这一切,而无需创建文件bar.txt?您可以使用进程替换: foo <(echo "This is a one line file") foo我假设foo不会尝试读取stdin。如果是

假设我有一个shell命令
foo
,它需要一个像
bar.txt
这样的文件作为参数,我想把一行文件传递给
foo
,然后像这样擦除它:

echo "This is a one line file" > bar.txt
foo bar.txt
rm bar.txt

是否有一种方法可以在一行shell脚本中完成这一切,而无需创建文件
bar.txt

您可以使用进程替换:

foo <(echo "This is a one line file")

foo我假设foo不会尝试读取stdin。如果是这样,作为Cyrus建议的流程替换的替代方案,您也可以这样做

 echo "This is a one line file" | foo /dev/stdin

尝试这样的命令替换

cat $(ls)

其中,“ls”的结果将被替换为“cat”的参数以执行

而不是不修改
foo
。如果可以修改
foo
,则可以将字符串作为参数传递,或者将其修改为从stdin读取并执行:
echo long_string | foo
等操作。如果将破折号作为文件名传递,则某些程序将从
stdin
读取:
foo-