\ n не работает в сценарии оболочки

Я новичок в unix и пытаюсь выполнить следующую команду, используя сценарий оболочки "setup.sh"

if [ `grep -c 'pro-ad-assembly-0.1' /usr/local/conf/jobserver.conf` =  0 ]; then
    sed -i "\$aspark {\n  jobserver {\n    job-bin-paths {\n      ad-scala=\"/opt/scala/pro-ad-assembly-0.1-SNAPSHOT.jar\"\n    }\n  }\n}" /usr/local/conf/jobserver.conf
fi

но jobserver.conf не обновляется должным образом и возвращает

include file("/hb/data/spark/job-server/jobserver.conf")
spark.context-settings.memory-per-node = ${SPARK_EXECUTOR_MEMORY}
spark {n  jobserver {n    job-bin-paths {n      advisor-scala = "/opt/scala/pro-ad-assembly-0.1-SNAPSHOT.jar"n    }n  }n}

поскольку символ новой строки не работает, а n остается при обновлении файла jobserver.conf

Когда я пытаюсь запустить

if [ `grep -c 'pro-ad-assembly-0.1' /usr/local/conf/jobserver.conf` =  0 ]; then
    sed -i "\$aspark {\n  jobserver {\n    job-bin-paths {\n      ad-scala=\"/opt/scala/pro-ad-assembly-0.1-SNAPSHOT.jar\"\n    }\n  }\n}" /usr/local/conf/jobserver.conf
fi

в терминале только тогда он работает нормально, но не тогда, когда я делаю то же самое через сценарий оболочки

Это мой сценарий оболочки

    #!bin/sh


    # Update jobserver config 
    if [ `grep -c 'pro-ad-assembly-0.1' /usr/local/conf/jobserver.conf` =  0 ]; then
            sed -i "\$aspark {\n  jobserver {\n    job-bin-paths {\n      ad-scala=\"/opt/scala/pro-ad-assembly-0.1-SNAPSHOT.jar\"\n    }\n  }\n}" /usr/local/conf/jobserver.conf
fi

Я делаю что-то неправильно Может кто-нибудь мне помочь

sed хорош для разбора отдельных строк. Это xyproblem.info. Что ты на самом деле пытаешься сделать? (т.е. обновление конфигурации). Чтобы сопоставить несколько строк, вам нужно добавить несколько строк в пространство шаблонов в sed с помощью команды n.

KamilCuk 08.08.2018 11:16
"\n" и '\n' - две разные вещи. Вы использовали первое, но я полагаю, вы хотели второе.
AlexP 09.08.2018 10:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
525
1

Ответы 1

#! bin / sh

sed -i '$ a spark { \n jobserver {\n job-bin-paths {\n text here }\n }\n}"' test.txt

Это пример сценария, который выводит данные в виде новой строки «\ n».

Другие вопросы по теме