比较 bash 中声音文件的长度
Compare length of sound file in bash
我想要一个 shell 脚本,用于检查声音文件的长度并检查长度是否短于指定长度。但是我在 if 语句中不断收到错误消息 "command not found"。
#!/bin/bash
soundlength=$(soxi -D )
enter code here
if [$soundlength < ]
then
# do something
fi
我猜 $soundlength 是一个字符串,它无法将字符串与 int 进行比较,但我找不到解决这个问题的方法。
提前感谢所有的回答。
问题是 soxi
returns 0 或浮点数 - 例如 27.741995,因此您需要 bc
或 awk
来检查输出是否大于N,这是因为 bash
不支持浮点数。
这里有一个 bc
的例子:
#!/bin/bash
soundlength=$(soxi -D )
if [ 1 -eq "$(echo "${soundlength} > " | bc)" ]; then
echo "${soundlength} is > than "
fi
这里有一个 AWK
的例子:
#!/bin/bash
soundlength=$(soxi -D )
if awk 'BEGIN{exit ARGV[1]>ARGV[2]}' "$z" "$y"; then
echo "${soundlength} is > than "
fi
如果您不想使用 bc
或 awk
,您可以尝试 zsh shell,它支持浮动。
我想要一个 shell 脚本,用于检查声音文件的长度并检查长度是否短于指定长度。但是我在 if 语句中不断收到错误消息 "command not found"。
#!/bin/bash
soundlength=$(soxi -D )
enter code here
if [$soundlength < ]
then
# do something
fi
我猜 $soundlength 是一个字符串,它无法将字符串与 int 进行比较,但我找不到解决这个问题的方法。
提前感谢所有的回答。
问题是 soxi
returns 0 或浮点数 - 例如 27.741995,因此您需要 bc
或 awk
来检查输出是否大于N,这是因为 bash
不支持浮点数。
这里有一个 bc
的例子:
#!/bin/bash
soundlength=$(soxi -D )
if [ 1 -eq "$(echo "${soundlength} > " | bc)" ]; then
echo "${soundlength} is > than "
fi
这里有一个 AWK
的例子:
#!/bin/bash
soundlength=$(soxi -D )
if awk 'BEGIN{exit ARGV[1]>ARGV[2]}' "$z" "$y"; then
echo "${soundlength} is > than "
fi
如果您不想使用 bc
或 awk
,您可以尝试 zsh shell,它支持浮动。