gpt4 book ai didi

regex - bash 脚本中的 Perl 命令不是解释命令(它实际上是替换它)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:25:58 25 4
gpt4 key购买 nike

我的 bash 脚本使用 perl 命令将文件中的变量替换为另一个文件的内容。我认为非常标准,但我真的在这里挣扎。

#/bin/bash

display_usage() {
echo -e "\nUsage: This script must be run with an environment parameter (file in directory env/)."
echo -e "Example: ./configureEnv <env parameter>\n"
}

# If no env argument supplied, display usage.
if [ $# -eq 0 ]; then
display_usage
exit 1
fi

# Replace the placeholder of FIREBASE_ENV in index.html with the Firebase env settings.
perl -pi -e 's/%FIREBASE_ENV%/`cat testEnvConfig`/g;' index.html

if [ $? -eq 0 ]; then
echo "Updated Firebase settings based on environment file: $1"
exit 0
else
echo "[Error] Environment settings configuration failed. Please check parameters are correct."
exit 1
fi

如您所见,关键行是:

perl -pi -e 's/%FIREBASE_ENV%/`cat testEnvConfig`/g;' index.html

它应该用文件的内容替换 %FIREBASE_ENV% 的占位符字符串,但它用 `cat testEnvConfig` 替换了 replaces %FIREBASE_ENV%。

最佳答案

替换中的替换插入双引号之类的变量,但它不解释反引号。您需要指定 /e 修饰符以将替换评估为代码。

s/%FIREBASE_ENV%/`cat testEnvConfig`/ge

不过,您不需要为此花大钱。 Perl 可以读取文件并将其内容存储在变量中:

my $config = do { local( @ARGV, $/ ) = 'testEnvConfig'; <> };
# ...
s/%FIREBASE_ENV%/$config/g;

关于regex - bash 脚本中的 Perl 命令不是解释命令(它实际上是替换它),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56556736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com