Проблема подстановки команд, запутанная
Я пытаюсь, чтобы 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
в баш.