【bash】脚本输出多语言版本的提示信息

{
  declare -gA GPROMPTS=()
  ###COLOR-FUNCS
  eval '_red() { { CLR=red mt_showtip $@;exit 1; } 2>/dev/null; }'
  eval '_blue() { { CLR=blue mt_showtip $@; } 2>/dev/null; }'
  eval '_cyan() { { CLR=cyan mt_showtip $@; } 2>/dev/null; }'
  eval '_green() { { CLR=green mt_showtip $@; } 2>/dev/null; }'
  eval '_purple() { { CLR=purple mt_showtip $@; } 2>/dev/null; }'
  eval '_yellow() { { CLR=yellow mt_showtip $@; } 2>/dev/null; }'
} 2>/dev/null

mt_showtip() {
  case ${CLR} in
  [rR] | red) printf '\e[31;1m' ;;
  [bB] | blue) printf '\e[34;1m' ;;
  [cC] | cyan) printf '\e[36;1m' ;;
  [gG] | green) printf '\e[32;1m' ;;
  [pP] | purple) printf '\e[35;1m' ;;
  [yY] | yellow) printf '\e[33;1m' ;;
  esac
  ##
  if [[ "X${*//[a-z0-9_]/}" == "X" ]]; then
    ##信息名称的关键字只包含由小写字母(a-z),数字(0-9)以及下划线(_)的多个字符组成
    eval "printf '${GPROMPTS[${zlang:-cn}, $1]}\e[0m'"
  else
    ##其他情形,将参数本身当成提示信息输出
    printf "${*}\e[0m"
  fi
  [ X${NEWLINE:-1} = X1 ] && echo
}

test_mult_langtip() {
  {
    # 检查系统版本是否符合要求
    GPROMPTS+=(
      [cn, must_likedebian]="本机操作系统不符合要求,需要 Ubuntu 或 Debian 8+"
      [en, must_likedebian]="NOT meet the requirements, Ubuntu or Debian 8+ is required"
      [cn, meet_os_version]="本机操作系统符合要求"
      [en, meet_os_version]="This OS meets the requirements"
    )
  } 2>/dev/null
  
  _green "meet_os_version"
  _yellow "must_likedebian"
}
###测试用例###
test_mult_langtip
zlang=en test_mult_langtip
# test_mult_langtip_2
_blue "蓝色提示信息"
_green "绿色提示信息"
_purple "紫色提示信息"
_red "红色提示信息并退出脚本(没有执行后面的语句)"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值