Wag*_*ags 5 shell-script busybox ash
我有以下脚本从基于我的系统上的EXIF命令中提取数据busybox ash
。我从文件末尾解析日期标签,并case
用作最终检查以确保格式正确。我的问题是最后的if
语句似乎总是返回 true;即 d="$e - Jebby (exif"
总是运行。如果 Iecho $en
并且echo $dn
它显示$en大于$dn但该if
语句仍然运行d="$e - Jebby (exif"
.
x=<valid filename>
e=$(exif -d -m -t 0x9003 -- "$x" 2>/dev/null)
let l=${#e}-18
e=$(expr substr "$e" $l 19)
e="${e%[ ][0-2][0-9][:][0-6][0-9][:][0-6][0-9]*}"
e="${e##*[!1-2][!09][!0-9][!0-9][!:][!0-1][!0-9][!:][!0-3][!0-9]}"
e=$(expr substr "$e" 1 4)$(expr substr "$e" 6 2)$(expr substr "$e" 9 2)
case "$e" in
[1-2][09][0-9][0-9][0-1][0-9][0-3][0-9])
let en=$e+3
ds="${d% - Jebby (}"
let dn=$ds
if [ $en -lt $dn ]; then
d="$e - Jebby (exif"
fi
esac
Run Code Online (Sandbox Code Playgroud)
对我来说,灰烬的比较效果很好:
./busybox ash
$ [ 1 -lt 2 ] && echo true || echo false
false
$ [ 3 -lt 2 ] && echo true || echo false
true
$ a=1 b=2 c=3
$ [ $a -lt $b ] && echo true || echo false
true
$ [ $c -lt $b ] && echo true || echo false
false
$
Run Code Online (Sandbox Code Playgroud)
你的变量的内容到底是什么?你知道-lt
比较数字吗?
您也可以这样做set -x
看看发生了什么。