这是由sed编辑的文件:
# cat flyway.conf.j2
flyway.url=jdbc:postgresql://{{ DB_HOST }}:5432/{{ DB_NAME }}?currentSchema=fm_fmp
flyway.user={{ FLYWAY_USER }}
flyway.password={{ FLYWAY_PASSWORD }}
这是代码片段,注释是我对代码的理解,是我理解正确的,也是## * /获取目录的基本名称:
# To get the last dir in current working directory, and if you want to do it completely within a bash script without running any external binaries
SCHEMA=${PWD##*/}
#sed -i means inplace, alnum means alphanumeric, 1s (Only search and replace 1st line) searching for string =any_alpha_numeric then _ then {},
# then *$ meaning to the end and replace with value of variable $SCHEMA
sed -i "1s/=[[:alnum:]_{} ]*$/=${SCHEMA}/" flyway.conf.j2
答案 0 :(得分:0)
${PWD##*/}
是bash变量扩展的一部分。一般来说
$ {var ## Pattern}从$ var中删除与$ var的前端匹配的$ Pattern的最长部分。
因此它会产生当前工作目录,减去它的第一部分,以/
结尾
[[:alnum:]_{} ]*
是“任意数量的字母数字,空格,下划线或花括号”的正则表达式
$
要求正则表达式在该行结束,并且必须以=
开头。