Bash 将数据导入shell命令,该命令需要文件名
假设我有一个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。如果是
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-