3

Итак, у меня есть установочный скрипт, который в один момент записывает несколько строк в файл. Это еще один сценарий. Я хочу, чтобы это повторилось:

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

Однако он заменяет «$ VAR» пробелом, а некоторые другие строки опускаются. Есть ли способ повторить это все ТОЧНО, как это там представлено? Я предпочитаю, чтобы все было в одном сценарии.

1 ответ1

4

Вы можете либо избежать всех знаков доллара в здесь-документе, либо просто заключить в кавычки строку конца документа (которая отключает все расширения в документе):

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .