gpt4 book ai didi

Bash 函数有多行文本来覆盖 tomcat 构建脚本中的 jdbc 配置文件

转载 作者:行者123 更新时间:2023-11-28 22:48:40 24 4
gpt4 key购买 nike

问题

从 .bash_profile 中的 bash 函数运行时,如何让多行文本覆盖文件?

有问题的部分

注意:这在 CLI 手动运行时有效。在以下函数中运行时,这不起作用。

cd /Library/Tomcat/webapps/ROOT/WEB-INF/classes;
echo "jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://thisismyurl
jdbc.username=user
jdbc.password=password" > "jdbc.properties";

Bash 函数

function build()
{
cwd=$(pwd);
SECONDS=0;
sudo -l;
/Library/Tomcat/bin/Shutdown.sh
cd ~/code/repos/web;
mvn clean install -DskipTests=true -s ../settings.xml;
/Library/Tomcat/bin/Startup.sh
yes | cp -rf ~/code/repos/web/ROOT.war
/Library/Tomcat/webapps/ROOT.war;

cd /Library/Tomcat/webapps/ROOT/WEB-INF/classes;
echo "jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://thisismyurl
jdbc.username=user
jdbc.password=password" > "jdbc.properties";
cd $cwd;
echo "--- It took $SECONDS seconds to complete the build ---";
}

背景

我在 .bash_profile 中编写了一个函数来重建 Web 前端并在构建后更新 jdbc 凭据。当从我的 .bash_profile 调用该函数时,war 的构建和复制工作。如果我从命令行手动运行 echo 命令,它就会起作用。当从我的 .bash_profile 调用 echo 命令时,它不起作用。在函数内运行时,它不会进行任何更改或抛出任何错误。

最佳答案

尝试过:

function build()
{
echo "jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://thisismyurl
jdbc.username=user
jdbc.password=password" > "jdbc.properties";
}

在一个名为 something.sh 的文件中来源./something.sh并运行构建并成功运行。

关于Bash 函数有多行文本来覆盖 tomcat 构建脚本中的 jdbc 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47756651/

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