冒号打破了bash脚本

时间:2016-03-16 10:17:54

标签: bash colon

我正在尝试运行此脚本:

#!/bin/bash

DAR=$(ffprobe -v error -of default=noprint_wrappers=1:nokey=1 -show_entries stream=display_aspect_ratio $1)
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?

1 个答案:

答案 0 :(得分:4)

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

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

引用可能不一定非必要,但被认为是“良好做法”,因为迟早你会有一个像16 9(带空格)这样的字符串会破坏东西。通常,您总是希望引用字符串以便安全(我也发现它更容易阅读,因为字符串现在可以突出显示语法)。