我正在尝试运行此脚本:
#!/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?
答案 0 :(得分:4)
使用=
进行字符串比较(-eq
仅 用于比较整数,因此错误integer expression expected
)并引用两个值,如"$DAR"
和"16:9"
:
if [ "$DAR" = "16:9" ]
引用可能不一定非必要,但被认为是“良好做法”,因为迟早你会有一个像16 9
(带空格)这样的字符串会破坏东西。通常,您总是希望引用字符串以便安全(我也发现它更容易阅读,因为字符串现在可以突出显示语法)。