冒号破坏了 bash 脚本

colon breaks the bash script

我正在尝试 运行 这个脚本:

#!/bin/bash

DAR=$(ffprobe -v error -of default=noprint_wrappers=1:nokey=1 -show_entries stream=display_aspect_ratio )
echo $DAR
if [ $DAR -eq 16:9 ]
then echo sixteen-by-nine
else
echo not-sixteen-by-nine

脚本的结果是:

16:9
line 3: [: 16:9: integer expression expected
not-sixteen-by-nine

如何安全地使用字符串 16:9?

使用 = 进行字符串比较(-eq 用于比较整数,因此出现错误 integer expression expected)并引用两个值,例如"$DAR""16:9":

if [ "$DAR" = "16:9" ]

这里可能不一定严格引用,但被认为是 "good practice",因为迟早你会得到一个像 16 9(带有 space)这样的字符串,这会破坏内容.通常,为了安全起见,您总是希望引用字符串(我还发现它更易于阅读,因为现在可以对字符串进行语法高亮显示)。