簡體   English   中英

單個bash行中的嵌套命令

[英]Nested commands in single bash line

使用bash,如何在一行中將一個命令的輸出文件發送為第二個命令的變量?

我正在嘗試使用流光和雜色使用網絡攝像頭拍照,然后將其通過電子郵件發送到電子郵件地址。 我已經到了以下內容,但是不確定如何告訴mutt使用上一個(streamer)命令中創建的文件。

streamer -o image.jpg && echo "email body" | mutt -a (file from previous command) -s Subject -- recipient@email.com

AFAIK沒有這種方式。

您可以做的是以下幾點

OUTPUT_FILE="image.jpg"; streamer -o ${OUTPUT_FILE} && echo "email body" | mutt -a ${OUTPUT_FILE} -s Subject -- recipient@email.com

在您的示例中,輸出文件名甚至是靜態的,因此您可以對其進行硬編碼。

如果我了解streamer工作原理,則可以使用流程替換:

echo "email body" | mail -a <( streamer )

該外殼程序為-a選項提供了一個文件名,然后可以讀取mail以訪問streamer的標准輸出。

否則,只需使用mbratch所建議的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

重用當前命令行的第三個單詞(從0開始計數)以獲取streamer用於輸出的文件名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM