为什么这个脚本可以在 Ubuntu 上运行,而不能在 Debian 上运行?

为什么这个脚本可以在 Ubuntu 上运行,而不能在 Debian 上运行?

我运行一个简单的《我的世界》服务器。我不久前为 Ubuntu 制作了一个脚本,它会自动创建一个 Gnu 屏幕并启动所述服务器。我决定购买一台使用 Debian 的新服务器。现在由于某种原因,该脚本无法运行,我不知道为什么!

sleep 5
screen -dmS mc
sleep 1
screen -p 0 -S mc -X stuff "cd /home/server/Desktop/ServerSoftware/Minecraft/modpacks^AgrarianSkiesHQ^3_1_1^AgrarianSkiesHQServer"
sleep 1
screen -p 0 -S mc -X eval "stuff \015"
sleep 1
screen -p 0 -S mc -X stuff ./ServerStart.sh
sleep 1
screen -p 0 -S mc -X eval "stuff \015"

它应该如何工作:

  1. 启动最小化的 GNU 屏幕
  2. 将目录更改为minecraft服务器目录
  3. 启动服务器

基本上它不起作用的是它会创建屏幕并与之分离。但之后,当我恢复屏幕时,我必须按 CTRL+c 才能输入任何内容。 “cd”命令永远不会发送,./StartServer.sh 也不会发送

CD 行中的“^”应该在那里。我已经在终端中测试了该命令,它按需要工作。

答案1

您的脚本不起作用,因为^引入了控制字符序列。这两个字符^A填充了一个Ctrl+A字符,bash 将其解释为转到行开头的命令。你需要用它\^来代替。

screen -p 0 -S mc -X stuff 'cd /home/server/Desktop/ServerSoftware/Minecraft/modpacks\^AgrarianSkiesHQ\^3_1_1\^AgrarianSkiesHQServer^M'
screen -p 0 -S mc -X stuff './ServerStart.sh^M'

我在屏幕更改日志中找不到任何记录显示此行为已更改,但如果您的脚本在较旧的计算机上运行,​​则它必须已更改。

相关内容