通过服务启动JavaJAR(linux),参数作为单个变量

通过服务启动JavaJAR(linux),参数作为单个变量,java,bash,shell,Java,Bash,Shell,我想启动一个jar文件(SpringBoot应用程序),并附带其他参数 当我通过shell命令启动时,它会正常启动: java -jar spring.boot.jar --parameter01="My Parameter Value 01" --parameter02="My Parameter Value 02" 现在,我想将所有参数传递到bashshell(在/etc/init.d中作为服务启动它) ($1等于上面的值>>--parameter01=“我的参数值01”--paramet

我想启动一个jar文件(SpringBoot应用程序),并附带其他参数

当我通过shell命令启动时,它会正常启动:

java -jar spring.boot.jar --parameter01="My Parameter Value 01" --parameter02="My Parameter Value 02"
现在,我想将所有参数传递到bashshell(在/etc/init.d中作为服务启动它)

($1等于上面的值>>--parameter01=“我的参数值01”--parameter02=“我的参数值02”)

然后Spring应用程序不识别值“My Parameter value 01”,而只识别“My”。
我该怎么办?我试图避开空格字符和引号字符,但没有任何效果

一个用单个参数调用
java-jar-spring.boot.jar
的简单脚本,让我们调用它/etc/init.d/run-spring-boot,在执行它之前确保
chmod+x/etc/init.d/run-spring-boot

#!/bin/bash
echo java -jar spring.boot.jar $1
java -jar spring.boot.jar $1
使用引用的整个字符串的单个输入参数和转义的内部引号调用脚本:

/etc/init.d/run-spring-boot "--parameter01=\"My Parameter Value 01\" --parameter02=\"My Parameter Value 02\""

如果您的系统支持systemd,我想您可以尝试:

创建一个服务文件,您认为在/ETC/StReD/St/目录中的名称为:

sudo vi /etc/systemd/system/spring-boot.service

[Unit]
Description=Spring Boot Service
StartLimitIntervalSec=0
After=syslog.target

[Service]
Type=simple
Restart=always
RestartSec=4
User=root
ExecStart=/bin/bash -c "/usr/bin/java -jar spring.boot.jar --parameter01='My Parameter Value 01' --parameter02='My Parameter Value 02'"

[Install]
WantedBy=multi-user.target
接下来,您必须重新加载systemd:

sudo systemctl daemon-reload
接下来,您可以启动它:

sudo systemctl start spring-boot
获取状态:

systemctl status spring-boot
停下来:

sudo systemctl stop spring-boot
或者通过系统引导将其添加到autostart:

sudo systemctl enable spring-boot
要解决问题,您可以运行下一个并行终端窗口以查看实时更改:

sudo tail -f /var/log/syslog

我建议将变量分解为几个部分(
SENDER\u NAME
PORT
),但您发布的示例应该可以工作。您使用的是什么操作系统和shebang行?@RuaTre请重新表述您的问题,现在几乎无法理解。
sudo tail -f /var/log/syslog