1

случай

Я пытаюсь заменить все вхождения <value>*</value> в <value>file:\\</value> в указанном файле test.txt .

Я работаю в Windows и использую sed я установил с Win-32 скомпилированным набором утилит bash.

Я использую следующую команду:

sed -n "s/<value>.*<\/value>/<value>file:\\\\<\/value>/g" "test.txt" > "test.txt.new"

Я хочу выполнить эту команду как часть скрипта Wpkg .

проблема

Когда я использую эту команду из командной строки, все работает правильно.

Но когда я использую эту команду через скрипт Wpkg :

<install cmd='%BASH%\sed -n "s/&lt;value&gt;.*&lt;\/value&gt;/&lt;value&gt;file:\\\\&lt;\/value&gt;/g;" test.txt" > "test.txt new"' />

... то, что я получаю, это:

Exit code returned non-successful value (2) on command '%BASH%\sed -n "s/<value>
.*<\/value>/<value>file:\\\\<\/value>/g;" "test.txt" > "test.txt.new"'.

Вышеуказанное означает, что приложение sed вернуло код выхода 2. Кроме того, новый файл не был создан.

Я очень долго просматривал Google, и, к моему удивлению, у sed довольно плохая документация. Я не нашел документации относительно этого кода выхода.

Вопрос

Кто-нибудь понял, что означает код выхода 2 для sed?

... или альтернативное решение?

(должно быть оставлено без присмотра, наверняка можно использовать обычные инструменты bash)

2 ответа2

2

Sed выдает код выхода?

Большинство версий sed этого не делают, но проверьте документацию, поставляемую с той версией, которую вы используете. GNU sed выдает код завершения 0, если программа нормально завершена, 1, если в скрипте были ошибки, и 2, если были ошибки во время выполнения скрипта.

Источник САС FAQ:

2

Я не уверен, что ваша проблема с sed . Должен ли% BASH% вычислять каталог, в котором находится исполняемый файл sed и подтвердили ли вы, что это так? Потому что я ожидал бы, что (если он вообще определен в Windows)% BASH% будет определять путь к самому исполняемому файлу bash , и в этом случае добавление к нему «\sed» не имеет смысла.

В частности, я отмечу, что код ошибки DOS 2 "Файл не найден" - возможно, это проблема с поиском файла «% BASH%\sed»?

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