Как создавать сценарии, которые создают другие сценарии

Я пишу сценарий, который должен сгенерировать другой сценарий, который будет использоваться для выключения сервера приложений ...

Вот так выглядит мой код:

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

Но он создается неправильно, вот так выглядит выходной файл 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

Когда вы видите, многое не так:

  • нет команды echo
  • принимает \ n буквально, поэтому новой строки нет

Сомнения:

  • Как правильно создать сценарий .sh, чтобы создать другой сценарий .sh.
  • Что, по-твоему, я делаю неправильно?
2
задан 16.04.2020, 14:06

2 ответа

Если вы хотите использовать эхо с экранированными символами, такими как \n, вы должны добавить переключатель -e echo -e " ... ". Однако может быть проще использовать cat с здесь документом вместо

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
0
ответ дан 16.04.2020, 14:07
  • 1
    @sfrj Да, Вы будете. Просто добавьте свой материал прежде второй EOF. – weaver 16.04.2020, 14:07
  • 2
    Я не уверен в этом. Я буду в состоянии иметь больше материала ниже? – serge_k 16.04.2020, 14:08

Удаление \ n из вашего кода и простое выполнение работали для меня.

#!/bin/bash

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

Результаты в результате;

Hello World
0
ответ дан 16.04.2020, 14:07

Теги

Похожие вопросы