我有一个脚本,应该确保用户当前的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
set -vx
运行吗?看起来这样就很容易看出问题所在了。另外,我看不出你的“version”函数增加了任何价值,它似乎会将5.1.3重新格式化回到5.1.3。哦……它是否会将像“5.01.03”这样的内容规范化为“5.1.3”?祝你好运! - shellter>
测试成功,您的测试也会检查版本是否完全是5.2.13(因为您试图寻找大于5.2.13或小于5.2.13的版本)。我认为您遇到了I/O重定向问题,因为您正在使用[
;规则与[[
不同。在第一次测试后,您将拥有一个文件5.12.3(空文件),这是幸运的(或者我应该说不幸的)因为它防止了第二个测试中的输入重定向失败。 - Jonathan Leffler