Bash脚本实现本地Neovim版本校验与旧版本卸载问题求助
问题修复:PopOS 22.04下Neovim版本检查与卸载脚本
原脚本存在的问题
- 未安装Neovim时,仍会执行
nvim --version命令,导致抛出nvim: command not found错误 has_nvim变量赋值逻辑错误:command -v nvim >/dev/null的返回值是退出码,而非输出内容,直接存变量后判断逻辑失效- 版本对比逻辑颠倒:原脚本中版本≥0.9时执行卸载,与需求(版本过低才卸载)相反
- 版本提取不严谨:
[0-9]\.[0-9]只能匹配两位版本号,无法处理如0.10这类多位数的版本
修正后的脚本
#!/bin/bash # 检查Neovim是否安装 if command -v nvim >/dev/null 2>&1; then # 获取完整主版本号(如0.9.4提取为0.9) nvim_version=$(nvim --version | head -1 | grep -oP '^NVIM v\K\d+\.\d+') # 对比版本,若低于0.9则卸载 if (( $(echo "$nvim_version < 0.9" | bc -l) )); then echo "Neovim版本过低(当前版本:$nvim_version),开始卸载..." sudo apt remove neovim -y else echo "Neovim版本符合要求(当前版本:$nvim_version)" fi else echo "Neovim未安装" fi
关键修复点说明
- 直接用
command -v nvim >/dev/null 2>&1作为if条件,避免未安装时执行nvim --version - 改用
grep -oP的正向零宽断言提取版本号,确保准确获取主版本部分 - 调整版本对比逻辑,用
$nvim_version < 0.9判断是否需要卸载,符合需求 - 输出信息补充当前版本,提升可读性
内容的提问来源于stack exchange,提问作者Amoz
相关产品推荐
相关产品推荐

