Come creare script che creano un altro script

2

Sto scrivendo uno script che ha bisogno di generare un altro script che verrà utilizzato per chiudere un appserver ...

Ecco come appare il mio codice:

echo "STEP 8: CREATE STOP SCRIPT"
stopScriptContent="echo \"STOPING GLASSFISH PLEASE WAIT...\"\n
cd glassfish4/bin\n
chmod +x asadmin\n
./asadmin stop-domain\n
#In order to work it is required that the original folder of glassfish don't contain already any #project, otherwise, there will be a conflict\n"
${stopScriptContent} > stop.sh
chmod +x stop.sh

Ma non viene creato correttamente, ecco come appare l'output stop.sh:

"STOPING GLASSFISH PLEASE WAIT..."\n cd glassfish4/bin\n chmod +x asadmin\n ./asadmin stop-domain\n #In order to work it is required that the original folder of glassfish don't contain already any #project, otherwise, there will be a conflict\n

Come vedi, molte cose sono sbagliate:

  • non esiste un comando echo
  • sta prendendo il \ n letteralmente così non c'è una nuova riga

I miei dubbi sono:

  • Qual è il modo corretto di creare uno script .sh per creare un altro .sh script.
  • Che cosa ti sto sbagliando?
posta sfrj 17.10.2013 - 23:24

2 risposte

3

Se vuoi usare echo con caratteri di escape come \n dovresti aggiungere -e switch echo -e " ... " . Tuttavia potrebbe essere più semplice utilizzare cat con un documento qui invece

cat > stop.sh <<EOF
echo "STOPING GLASSFISH PLEASE WAIT..."
cd glassfish4/bin
chmod +x asadmin
./asadmin stop-domain
#In order to work it is required that the original folder of glassfish don't contain already any #project, otherwise, there will be a conflict
EOF
chmod +x stop.sh
    
risposta data steeldriver 17.10.2013 - 23:35
2

Rimuovere \ n dal codice e farlo semplicemente ha funzionato per me.

#!/bin/bash

echo "#!/bin/bash
      echo 'Hello World'" > b.sh
bash b.sh

Risultati in uscita;

Hello World
    
risposta data theintern 17.10.2013 - 23:31

Leggi altre domande sui tag