Echo várias linhas no arquivo exatamente como é apresentado

3

Então, eu tenho um script de instalação que, em um ponto, escreve várias linhas em um arquivo. É outro roteiro. Eu quero que isso ecoe:

cat > $BASEDIR/start.sh << EndOfMessage
 cd $BASEDIR/
 VER=$(ls | grep --exclude-dir="Spigot" "spigot" | sort -nr)
 java -Xmx1024M -XX:MaxPermSize=128M -jar "$VER" -o true 
 sleep 5
 echo "Restarting..." && bash $BASEDIR/start.sh
EndOfMessage

No entanto, substitui "$ VAR" por espaço em branco e algumas outras linhas são omitidas. Existe uma maneira de ecoar tudo EXATAMENTE como é apresentado lá? Eu prefiro que seja tudo no mesmo script.

    
por Lee Ikard 26.10.2016 / 04:34

1 resposta

4

Você pode escapar de todos os sinais de dólar no documento here ou simplesmente citar a string de final de documento (que desativa todas as expansões dentro do documento):

cat > $BASEDIR/start.sh << 'EndOfMessage'  # Quotes prevent expansions in the here-doc
 cd $BASEDIR/
 VER=$(ls | grep --exclude-dir="Spigot" "spigot" | sort -nr)
 java -Xmx1024M -XX:MaxPermSize=128M -jar "$VER" -o true 
 sleep 5
 echo "Restarting..." && bash $BASEDIR/start.sh
EndOfMessage
    
por 26.10.2016 / 06:59

Tags