我正在遍历一个整数数组${startTimes}
(音频文件中的标记位置,在样本中)并使用bc
将这些整数转换为毫秒。我将结果传递到一个新数组${msValuesArray}
中。如果我一次运行每个数组元素,它工作正常。如果我for
循环运行它:
for i in $(seq 0 ${#startTimes[@]}); do
msValuesArray+=($(bc <<< ${startTimes[i]}/44.1))
done
结果${msValuesArray}
包含预期结果,但终端输出(standard_in) 1: parse error
.
虽然我打算在 shell 脚本中使用它,并且在阅读了此处的其他问题后,我了解到添加#!/bin/bash
到命令的开头可以避免解析错误,但我仍然不明白以下内容:
a)为什么在循环也有效的情况下手动将${startTimes}
元素传递到bc
工作而没有解析错误for
,但输出解析错误(在shell脚本之外)?
b) 尽管有解析错误,我还是得到了我想要的结果数组。我应该忽略错误吗?
c)当添加#!/bin/bash
到命令的开头(仍然在 shell 脚本之外,只是在命令行中)为什么结果无法访问?(输入echo ${msValuesArray[@]}
返回一个空数组。)
d) 在 shell 脚本中运行时,是否发生了同样的错误,但只是没有打印到终端?
任何帮助表示赞赏。谢谢。