自定义shell工具函数之echo_red()和prepare_check_required_pkg()

两个 bash 函数,echo_redprepare_check_required_pkg,它们在 shell 脚本中使用。下面是每个函数的解释:

echo_red 函数

function echo_red() {
  echo -e "33[1;31m$133[0m"
}

这个函数的目的是输出红色的文本到终端。它接受一个参数 $1,这是要显示的文本。

  • echo -eecho 是用来打印文本的命令,-e 参数允许解释字符串中的转义序列。
  • "33[1;31m$133[0m":这是一个带有 ANSI 转义序列的字符串,用于改变终端文本的颜色。
    • 33[1;31m:开始一个转义序列,设置文本颜色为红色(1;31)并加粗(1)。
    • $1:是传递给函数的第一个参数,即要打印的文本。
    • 33[0m:结束转义序列,将文本颜色重置回默认值。

prepare_check_required_pkg 函数

function prepare_check_required_pkg() {
  for i in curl wget tar iptables gettext; do
    command -v $i >/dev/null || {
        echo_red "$i: $(gettext 'command not found, Please install it first') $i"
        flag=1
    }
  done
  if [[ -n "$flag" ]]; then
    unset flag
    echo
    exit 1
  fi
}

这个函数用于检查系统中是否安装了一些必需的命令行工具。

  • for i in curl wget tar iptables gettext; do:这是一个 for 循环,遍历一个由 curlwgettariptablesgettext 组成的列表。
  • command -v $i >/dev/null:这个命令检查变量 $i 对应的命令是否存在。command -v 会返回命令的路径,如果命令不存在则不返回任何内容。输出被重定向到 /dev/null,这意味着不会在终端显示任何输出。
  • ||:这是一个逻辑 OR 操作符,如果 command -v $i 命令失败(即命令不存在),则执行后面的代码块。
  • { echo_red "$i: $(gettext 'command not found, Please install it first') $i"; flag=1 }:如果命令不存在,则使用 echo_red 函数以红色打印错误消息,并设置 flag 变量为 1
    • gettext 'command not found, Please install it first'gettext 用于国际化和本地化,它会根据系统的语言设置翻译给定的字符串。
  • if [[ -n "$flag" ]]; then:这是一个 if 条件判断,检查变量 flag 是否非空(即前面的循环中是否有命令未找到)。
  • unset flag:如果 flag 非空,则使用 unset 命令删除 flag 变量。
  • echo:打印一个空行以增加输出的可读性。
  • exit 1:退出脚本并返回状态码 1,表示脚本因为错误而终止。

总的来说,prepare_check_required_pkg 函数检查系统是否安装了特定的命令行工具,如果有任何一个工具没有安装,它会打印一条错误消息并退出脚本。