Я пишу сценарий, который должен сгенерировать другой сценарий, который будет использоваться для выключения сервера приложений ...
Вот так выглядит мой код:
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
Когда вы видите, многое не так:
Сомнения:
.sh
, чтобы создать другой сценарий .sh
. Удаление \ n из вашего кода и простое выполнение работали для меня.
#!/bin/bash
echo "#!/bin/bash
echo 'Hello World'" > b.sh
bash b.sh
Результаты в результате;
Hello World
Если вы хотите использовать эхо с экранированными символами, такими как \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