Я хочу передать выходной файл из аудио инструмента командной строки SoX в инструмент электронной почты mutt.

Что я хочу сделать, это что-то похожее на это:

sox /Users/someUser/Desktop/input.mp3 output.mp3 | mutt -s "someSubject" -a [output-from-sox] some@recipient.com

То, что я не знаю, как сделать, заключено в квадратные скобки.

Я новичок в UNIX, поэтому любые советы будут высоко оценены.

1 ответ1

2

Канал в Unix-подобной операционной системе предназначен для запуска одной программы, получения ее стандартного вывода (который в противном случае пошел бы на экран) и использования его в качестве входных данных для другой программы (вместо стандартного ввода, который обычно поступает с клавиатуры). ).

Похоже, что вы хотите сделать, чтобы одна программа выводила файл, а затем другая программа использовала этот файл в качестве входных данных. Тебе не нужна труба для этого.

Чтобы запустить одну программу за другой, завершить все в одной командной строке, используйте ; , Например:

sox /Users/someUser/Desktop/input.mp3 output.mp3 ; mutt -s "someSubject" -a output.mp3 some@recipient.com

Программы командной строки Unix выводят "состояние выхода" или "код возврата". Большинство программ выводят 0, чтобы указать, что они сделали свое дело успешно, или какое-то другое значение, если возникла проблема. Если ваша первая команда такая, используйте && вместо ; запустить вторую команду, только если первая была успешной. Например:

sox /Users/someUser/Desktop/input.mp3 output.mp3 && mutt -s "someSubject" -a output.mp3 some@recipient.com

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .