长脚本的一部分,我只是想比较两个数字,一个是常数,另一个是通过
ffprobe
检索的(错误消息中的474是ffprobe找到的高度)
CURRENT_RES=$(ffprobe -v quiet -select_streams v:0 -show_entries stream=height -of csv=s=x:p=0 "${fn}")
if [[ $CURRENT_RES -gt 1080 ]]; then
echo "leaving preset normal"
SLOW_PRESET=("" "")
else
echo "setting preset to slow"
SLOW_PRESET=(-preset slow)
fi;
产生:
/usr/local/bin/startScreen.sh: line 95: [[: 474
474: syntax error in expression (error token is "474")
setting preset to slow
我还尝试了算术运算符,例如:
if (($CURRENT_RES>1080)); then
echo "leaving preset normal"
SLOW_PRESET=("" "")
else
echo "setting preset to slow"
SLOW_PRESET=(-preset slow)
fi;
得到了略有不同,但本质上相同的错误消息,例如:
/usr/local/bin/startScreen.sh: line 95: ((: 474
474>1080: syntax error in expression (error token is "474>1080")
setting preset to slow
更令人困惑的是,在该块下面的 15 行中,还有另一个比较,效果非常好!
if [[ $CURRENT_RES -gt $CONVERT_HEIGHT ]]; then
我认为可能是内联写入的 1080 数字混淆了 if 表达式,所以我尝试将 1080 分配给变量并重用它,但这没有改变任何东西。
尝试像这样修改你的脚本:
CURRENT_RES=$(ffprobe -v quiet -select_streams v:0 -show_entries stream=height -of csv=s=x:p=0 "${fn}" | tr -d '[:space:]')
if [[ "$CURRENT_RES" -gt 1080 ]]; then echo "leaving preset normal" SLOW_PRESET=("" "") else echo "setting preset to slow" SLOW_PRESET=(-preset slow) fi
tr -d '[:space:]'
从 ffprobe 的输出中删除所有空格或换行符。现在 CURRENT_RES
应该可以干净地进行比较,解决您遇到的语法错误。