比较bash中声音文件的长度

时间:2017-09-23 19:23:46

标签: shell audio terminal wav sox

我想要一个shell脚本,它检查声音文件的长度并检查长度是否短于指定的长度。但是我一直在if语句中收到错误消息“command not found”。

#!/bin/bash
soundlength=$(soxi -D $1)

enter code here
if [$soundlength < $2]
then
  # do something
fi

我猜$ soundlength是一个字符串,它无法将字符串与int进行比较,但我无法找到解决方案。

提前感谢所有答案。

1 个答案:

答案 0 :(得分:1)

问题是soxi返回0或浮点数 - 示例27.741995,因此您需要bcawk来检查输出是否大于N,这是因为{{ 1}}不支持花车。

以下是bash的示例:

bc

以下是#!/bin/bash soundlength=$(soxi -D $1) if [ 1 -eq "$(echo "${soundlength} > ${2}" | bc)" ]; then echo "${soundlength} is > than ${2}" fi 的示例:

AWK

如果您不想使用#!/bin/bash soundlength=$(soxi -D $1) if awk 'BEGIN{exit ARGV[1]>ARGV[2]}' "$z" "$y"; then echo "${soundlength} is > than ${2}" fi bc awk,您可以尝试zsh shell,它支持浮点数。