Bash 脚本 self_install() 函数错误修复及优化

问题描述:

以下代码片段展示了 Bash 脚本中 self_install() 函数,该函数用于根据指定包管理器(pip、pip3、apt)自动安装指定软件包。然而,代码中存在括号位置错误,导致无法正常运行。

self_install() {
     case ${2} in
		pip)
	     if [ ! -f '$(command -v ${1}' ]; then
          	echo -e '$(gettime)${RED}目前并没有安装 ${1} 正在安装${RES}'
          	pip install -y ${1}
          fi
		;;
	pip3)
	     if [ ! -f '$(command -v ${1}' ]; then
          	echo -e '$(gettime)${RED}目前并没有安装 ${1} 正在安装${RES}'
          	pip3 install -y ${1}
          fi
		;;
	apt)
          if [ ! -f '$(command -v ${1}' ]; then
          	echo -e '$(gettime)${RED}目前并没有安装 ${1} 正在安装${RES}'
          	apt install -y ${1}
          fi
          ;;
     esac
}

解决方案:

修复报错的问题可以通过修改代码中的括号位置来解决。以下是修复后的代码:

self_install() {
    case ${2} in
        pip)
            if [ ! -f '$(command -v ${1})'' ]; then
                echo -e '$(gettime)${RED}目前并没有安装 ${1} 正在安装${RES}'
                pip install -y ${1}
            fi
            ;;
        pip3)
            if [ ! -f '$(command -v ${1})'' ]; then
                echo -e '$(gettime)${RED}目前并没有安装 ${1} 正在安装${RES}'
                pip3 install -y ${1}
            fi
            ;;
        apt)
            if [ ! -f '$(command -v ${1})'' ]; then
                echo -e '$(gettime)${RED}目前并没有安装 ${1} 正在安装${RES}'
                apt install -y ${1}
            fi
            ;;
    esac
}

修复后的代码中,在[ ! -f '$(command -v ${1})'' ]的判断条件中,括号的位置已经修正。

优化建议:

  1. 可以使用 which 命令代替 command -v 命令,因为 which 命令在大多数系统中都可用。
  2. 可以添加错误处理机制,例如捕获 install 命令执行失败的情况。
  3. 可以添加一些代码注释,方便理解代码逻辑。

代码示例:

#!/bin/bash

# 定义颜色变量
RED='�33[0;31m' # 红色
RES='�33[0m'  # 重置颜色

# 获取当前时间
gettime() {
  date +'%Y-%m-%d %H:%M:%S'
}

# 安装软件包函数
self_install() {
    case ${2} in
        pip)
            if [ ! -f '$(which ${1})' ]; then
                echo -e '$(gettime) ${RED}目前并没有安装 ${1} 正在安装${RES}'
                pip install -y ${1} || echo -e '${RED}安装失败${RES}'
            fi
            ;;
        pip3)
            if [ ! -f '$(which ${1})' ]; then
                echo -e '$(gettime) ${RED}目前并没有安装 ${1} 正在安装${RES}'
                pip3 install -y ${1} || echo -e '${RED}安装失败${RES}'
            fi
            ;;
        apt)
            if [ ! -f '$(which ${1})' ]; then
                echo -e '$(gettime) ${RED}目前并没有安装 ${1} 正在安装${RES}'
                apt install -y ${1} || echo -e '${RED}安装失败${RES}'
            fi
            ;;
    esac
}

# 使用示例
self_install python3 pip
self_install curl apt

注意:

  • 上述代码示例需要根据您的实际情况进行调整。
  • which 命令和 install 命令的使用方法可能因系统而异。
  • || 运算符用于执行 install 命令失败后的错误处理。
  • echo -e 命令用于输出彩色文本。

总结:

通过修复代码中的括号位置错误,并进行优化,可以提高 self_install() 函数的健壮性和可读性。此外,还可以根据您的需求添加更多功能和错误处理机制。

Bash 脚本 self_install() 函数错误修复及优化

原文地址: https://www.cveoy.top/t/topic/o7wY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录