Por que esse script funciona no Ubuntu e não no Debian?

2

Eu corro um servidor simples de minecraft. Eu fiz um script há algum tempo para o Ubuntu que criaria automaticamente uma tela Gnu e iniciaria o dito servidor. Eu decidi pegar um novo servidor com o Debian. Agora, por algum motivo, o script não funcionará e não tenho ideia do motivo!

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 5"
sleep 1
screen -p 0 -S mc -X stuff ./ServerStart.sh
sleep 1
screen -p 0 -S mc -X eval "stuff 5"

Como é suposto funcionar:

  1. Iniciar uma tela GNU minimizada
  2. Altere o diretório para o diretório do servidor de minecraft
  3. Iniciar o servidor

Basicamente, como isso não funciona é que ele irá criar a tela e ser separado dela. Mas depois disso, quando eu retomar a tela eu tenho que CTRL + c para poder introduzir qualquer coisa. o comando "cd" nunca é enviado, nem o ./StartServer.sh

O "^" na linha do CD deve estar lá. Eu testei o comando no terminal e ele funciona como desejado.

    
por HorribleScripter 11.07.2014 / 23:03

1 resposta

3

Seu script não funciona porque ^ introduz uma seqüência de caracteres de controle. O^A de dois caracteres% preenche um caractere Ctrl + A , que o bash interpreta como o comando para ir ao início da linha. Você precisa usar \^ .

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'

Não consigo encontrar nenhum registro no changelog da tela mostrando que esse comportamento mudou, mas se o seu script funcionou em uma máquina mais antiga, ele deve ter.

    
por 14.07.2014 / 01:35