[英]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.