我想要一个shell脚本,它检查声音文件的长度并检查长度是否短于指定的长度。但是我一直在if语句中收到错误消息“command not found”。
#!/bin/bash
soundlength=$(soxi -D $1)
enter code here
if [$soundlength < $2]
then
# do something
fi
我猜$ soundlength是一个字符串,它无法将字符串与int进行比较,但我无法找到解决方案。
提前感谢所有答案。
答案 0 :(得分:1)
问题是soxi
返回0或浮点数 - 示例27.741995,因此您需要bc
或awk
来检查输出是否大于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,它支持浮点数。