使用bash,如何在一行中从一个命令发送输出文件以用作第二个命令中的变量?
我正在尝试使用流光和mutt使用我的网络摄像头拍照,然后通过电子邮件将其发送到电子邮件地址。我已经到了下面,但不知道如何告诉mutt使用在前一个(流媒体)命令中创建的文件。
streamer -o image.jpg && echo "email body" | mutt -a (file from previous command) -s Subject -- recipient@email.com
答案 0 :(得分:0)
AFAIK没有这样的方式。
您可以做的是以下
OUTPUT_FILE="image.jpg"; streamer -o ${OUTPUT_FILE} && echo "email body" | mutt -a ${OUTPUT_FILE} -s Subject -- recipient@email.com
在您的示例中,输出文件名甚至是静态的,因此您可以对其进行硬编码。
答案 1 :(得分:0)
如果我理解streamer
如何工作,您可以使用流程替换:
echo "email body" | mail -a <( streamer )
shell为-a
选项提供了一个文件名,mail
可以读取该文件名以访问streamer
的标准输出。
否则,只需使用mbratch
建议的名称,因为带有邮件的管道在streamer
成功完成之前不会运行:
streamer -o image.jpg && echo "email body" | mail -a image.jpg
或者,使用有关命令行的一些知识来避免键入image.jpg
两次,请使用
streamer -o image.jpg && echo "email body" | mail -a !#:2
重用当前命令行的第3个字(从0开始计数)来获取用于输出的文件名streamer
。