Разрешение ввода в команде sedLinux

Ответить Пред. темаСлед. тема
Anonymous
 Разрешение ввода в команде sed

Сообщение Anonymous »

Я пытаюсь сделать так, чтобы в файле (rc.xml) он заменял две строки (тему) и (этот материал) содержимым файла openbox-$1 ($1 — аргумент). В рамках sed sed абсолютно ничего не делает с аргументом и ничего не заменяется. Однако когда я заменяю $1 каким-то предопределенным значением, сценарий работает так, как задумано. Однако при этом происходит потеря пользовательского ввода, что полностью нарушает всю цель сценария (установить правильные настройки Openbox для пользователя).
Текущий сценарий:

Код: Выделить всё

#!/usr/bin/bash
(игнорируйте это)

Код: Выделить всё

cp rccopy.xml rc.xml
(скрипт находится в стадии тестирования, поэтому он копирует новую копию файла, используемого вместо тестового файла, это также игнорируйте)

Код: Выделить всё

sed $'/ this stuff/ {r openbox-$1\n} ; /theme/,/ this stuff/ {d}' rc.xml > newfile
(предполагается, что вводимые пользователем данные принимаются как $1 и записываются содержимое файла openbox-$1 между двумя строками, перечисленными выше)
Измененная команда sed

Код: Выделить всё

sed $'/ this stuff/ {r openbox-500\n} ; /theme/,/ this stuff/ {d}' rc.xml > newfile
(работает по назначению, но копировать можно только файл openbox-500)
Я попытался убрать единичные кавычки из sed, но он сообщает об этом без кавычек:

Код: Выделить всё

sed: -e expression #1, char 2: unknown command: `/' ./replace.sh: line 3: /theme/,/: No such file or directory
С двойными кавычками:

Код: Выделить всё

sed: -e expression #1, char 0: unmatched `{'
Ожидается, что sed прочитает $1 в качестве аргумента вместо него (поэтому $1 будет равен 500, например, если пользователь вводит его), и он прочитает файл openbox-500 (просто в качестве примера). После этого сценарий (как упоминалось ранее) заменит все, что находится между двумя указанными строками (строки упоминаются ранее), и запишет измененный файл в новый файл.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ed-command
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»