gettext

概述

参考:

gettext 是 GNU 旗下的一组工具集合,提供了一个框架以帮助其他 GNU 包生成多语言消息。

通常包含如下几个工具:

  • envsubst
  • gettext
  • gettext.sh
  • ngettext

安装 gettext

一般的发行版都默认自带 gettext 工具集,如果没有,使用包管理器安装 gettext 包即可

Ubuntu

  • apt install gettext-base

envsubst

参考:

envsubst 程序可以用来替换环境变量的值。正常情况下,与 cat 命令类似,所有的标准输入都会复制到标准输出,但是不同的地方在于,如果标准输入中包含变量引用,比如 $VARIABLE${VARIABLE} 这种形式,则这些引用将会被替换为变量的值:

~]# envsubst
HOME
HOME
$HOME
/root
${HOME}   
/root

若我们将标准输入改为由文件提供,那么我们就可以将文件中的所有变量引用的地方都替换为对应的值。比如:

sudo tee ~/tmp/test.txt <<-"EOF"
HOME = ${HOME}
PATH = ${PATH}
API_URL = ${API_URL}
EOF

执行 envsubst < test.txt > test2.txt 命令以替换文件中的环境变量,生成的 test.txt 内容如下:

~]# cat test2.txt 
HOME = /root
PATH = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/go/bin
API_URL = 

也可以使用 envsubst '${HOME}' < test.txt > test1.txt 这种方式只替换 ${HOME} 变量,多个变量以 , 分隔。

Syntax(语法)

envsubst [OPTIONS] [ShellFormat]