将输出文件通过管道传输到 UNIX 工具

将输出文件通过管道传输到 UNIX 工具

我想将命令行音频工具 SoX 的输出文件传输到电子邮件工具 mutt 中。

我想要做的事情与此类似:

sox /Users/someUser/Desktop/input.mp3 output.mp3 | mutt -s "someSubject" -a [output-from-sox] [email protected]

我不知道该怎么做,用方括号括起来。

我是一名 UNIX 新手,因此非常感激任何提示。

答案1

类 Unix 操作系统中的管道用于运行一个程序,获取其标准输出(否则将输出到屏幕)并将其用作另一个程序的输入(代替通常来自键盘的标准输入)。

看起来你想要做的是有一个程序输出到文件,然后有另一个程序使用文件作为输入。你不需要管道。

要在一个程序完成后运行另一个程序(所有操作都在一个命令行上进行),请使用;。例如:

sox /Users/someUser/Desktop/input.mp3 output.mp3 ; mutt -s "someSubject" -a output.mp3 [email protected]

Unix 命令行程序输出“退出状态”或“返回代码”。大多数程序输出 0 来表示它们成功执行了任务,如果出现问题则输出其他值。如果您的第一个命令是这样的,请使用 代替 ,&&以便;在第一个命令成功时才运行第二个命令。例如:

sox /Users/someUser/Desktop/input.mp3 output.mp3 && mutt -s "someSubject" -a output.mp3 [email protected]

相关内容