【发布时间】:2021-11-19 02:34:24
【问题描述】:
我一直在尝试编写一个程序,它将获取Sox 中的音量调节统计信息,并将其存储在一个变量中。
要做到这一点,你必须这样做
sox *your-audio-file* -n stat,
最后一行将显示我想要的统计数据。
但是,当我尝试将该命令的整个输出存储在变量 INITSTAT 中时,它仍然是空白的,并且应该将输出存储在变量中的代码行只是将输出打印到终端。这就是我所拥有的:
INITSTAT=`sox $audioFilePath -n stat`
echo $INITSTAT
“$audioFilePath”是我试图获取相关信息的音频文件的路径。
如果有人知道出了什么问题,我们将不胜感激。
【问题讨论】:
-
所以
sox $audioFilePath -n stat自己按预期执行?附带说明一下,您可以将$audioFilePath包装为",以避免路径包含空格时出现问题。 -
试试这个
INITSTAT=$(sox "$audioFilePath" -n stat),让我们知道它是否有效。 -
来自
stat上的 Sox 手册,“信息输出到‘标准错误’(stderr)流”,sox.sourceforge.net/sox.html -
@zois 是的,
sox $audioFilePath -n stat将自行工作。我如何能够将 stderr 存储在变量中? 编辑我能够让它与INITSTAT=$((sox $audioFilePath -n stat) 2>&1)一起工作,万岁!感谢您告诉我有关 stderr 的事情。 -
@user1984 它不起作用,它具有相同的输出。我认为这是因为它们都是将命令存储在变量中的两种方式
标签: bash shell variables command sox