使用bash脚本,如果节点版本小于特定值,我想采取行动。
如何将Bmver版本与Bash进行比较?
类似的东西:
NV=$(node --version)
if [[ ${NV} < 5 ]]; then
# do something
fi
显然不太正确
node --version
输出看起来像:
$ node --version
v6.9.5
答案 0 :(得分:1)
您可以使用sort -V
来比较this post中所述的版本。一个非常好的oneliner。
或者如果你不介意利用debian发行版(我在这里假设这个前提),你可以:
$ dpkg --compare-versions $(node --version | grep -Eo "([0-9]\.)+[0-9]+") lt 5
$ echo $?
$ 1
答案 1 :(得分:1)
如果你需要做的只是比较第一个数字,你可以这样做:
nv=$(node --version)
if [[ $nv =~ ^v([0-9]+) ]] && (( ${BASH_REMATCH[1]} > 5 )) ; then
# do something
fi
此代码使用=~
正则表达式匹配运算符来匹配前导&#34; v&#34;后面的任何数字序列,括号允许将数字序列保存在子表达式中,然后对保存的子表达式进行数值比较(在索引1的BASH_REMATCH
数组中找到)。
请注意,通常建议(尽管不是严格要求)使环境变量以外的变量为小写。