命令替换问题,困惑

命令替换问题,困惑

我正在尝试让 sox 根据用户输入播放文件。为此,我设置了如下命令:

$ 播放 proc/$(read -n 1).wav

我在目录 proc 中拥有文件 0.wav 到 9.wav。我可以像以下示例一样播放其中一个文件:

$播放proc/4.wav

但是,当我尝试通过用户输入来执行此操作时,我按下数字 4,它输出的内容如下:

4play FAIL 格式:无法打开输入文件“proc/.wav”:没有此文件或目录

有什么想法吗?我很困惑。

答案1

我认为您遇到的问题是 bash read 命令不会将结果写入 stdout,而是将结果存储在变量中,无论是作为参数传递的命名变量,还是 REPLY 变量中。

举例来说,我认为你想要的是类似这样的东西:

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

您可以通过输入help readbash 来查看所有详细信息。

相关内容