Проблема подстановки команд, запутанная

Я пытаюсь, чтобы sox воспроизводил файл из пользовательского ввода. Для этого я настроил команду, подобную приведенной ниже:

$ play proc / $ (read -n 1).wav

У меня есть файлы с 0.wav по 9.wav, расположенные в каталоге proc. Я могу сыграть в одну из них, как в примере ниже:

$ play proc / 4.wav

Однако, когда я пытаюсь сделать это с помощью пользовательского ввода, я нажимаю цифру 4, и вот что она выводит:

Форматы 4play FAIL: невозможно открыть входной файл `proc/.wav': такого файла или каталога нет

Есть идеи? Я не совсем понимаю.

1 ответ

Я думаю, что у вас проблема в том, что команда bash read не записывает результат в stdout, она сохраняет результаты в переменных, именованных, переданных в качестве аргументов, или в переменной REPLY.

Так, например, я думаю, что вы хотите здесь что-то вроде:

read -n1 track
play "proc/$track.wav"

Вы можете увидеть все детали, набрав help read в баш.

Другие вопросы по тегам