【发布时间】:2020-05-19 01:41:49
【问题描述】:
我有这个脚本应该确保用户当前的 PHP 版本在一定范围内,虽然它应该可以工作,但某处存在一个错误,使它认为版本超出范围,有人可以看看并告诉我我能做些什么来解决它?
function version { echo "$@" | gawk -F. '{ printf("%d.%d.%d\n", $1,$2,$3); }'; }
phpver=`php -v |grep -Eow '^PHP [^ ]+' |gawk '{ print $2 }'`
if [ $(version $phpver) > $(version 5.2.13) ] || [ $(version $phpver) < $(version 5.2.13) ]; then
echo "PHP Version $phpver must be between 5.2.13 - 5.3.15"
exit
fi
【问题讨论】:
-
你能提供一个产生错误输出的输入吗?
-
你试过用shell调试功能
set -vx运行这个吗?似乎这样很容易看出问题出在哪里。另外,我没有看到您的version函数正在增加任何价值,它看起来会将 5.1.3 重新格式化回 5.1.3。哦.. 是不是将5.01.03之类的东西标准化为5.1.3?祝你好运! -
即使假设您使用
>进行的测试有效,您的测试也会检查版本是否正好是 5.2.13(因为您试图寻找大于 5.2.13 或小于 5.2.13 )。我认为您遇到了 I/O 重定向问题,因为您使用的是[;规则与[[不同。第一次测试后你会有一个文件 5.12.3(空);幸运(或者我的意思是不幸)它在那里,因为它可以防止第二次测试中的输入重定向失败。 -
@shellter 好主意,我没想到