Вам все равно не нужно экспортировать. Просто беги:
su - $USER -c "ORACLE_HOME=$ORA_HOME;PATH=$ORA_HOME/bin:$PATH;sqlplus / as sysdba"
Параметр export
нужен только в том случае, если вам нужно, чтобы переменные наследовались любыми дочерними оболочками, запускаемыми вашей оболочкой. Здесь вы запускаете команду из той же оболочки, поэтому нет необходимости export
.
Но, как указано в комментариях, это не поможет, если sqlplus
нужно видеть эти переменные, только если их нужно установить, чтобы правильно найти sqlplus. Если это не помогло, попробуйте:
su - $USER -c "ORACLE_HOME='$ORA_HOME' PATH='$ORA_HOME/bin:$PATH' sqlplus / as sysdba"
Конечно, есть веские аргументы против использования sed
для такой вещи, и другие приводили их.
Однако у вас может не быть возможности использовать упомянутые специализированные инструменты. Итак, если ваши входные файлы достаточно предсказуемы по своей структуре, чтобы позволить sed
работать, я бы сделал это так:
sed -ri.bak 's (src=").*/files/(.+[.]jpg") \1graphics/\2 g' *.xhtml
Он пытается (разумно )убедиться, что работает с правильными строками, упоминая немного контекста в поисковом выражении.
Примечание об использовании sed
:первый символ после команды s
определяет разделитель, который позволяет нам работать с /
без необходимости экранирования.
Вы также можете попробовать sed
. Я не включил флаг -i
, так как он неуместен при тестировании.
sed -E 's|(img src=").[^"]*(/.*)|\1graphics\2|' input_file
Это сгруппирует совпадения, которые нам нужно сохранить, и исключит те, которые нам не нужны.
(.*=.)
-Группирует все до последнего появления=
.[^"]*
-Исключенное совпадение.[^"]
используется для предотвращения совпадения с последним /
и совпадением со следующим"
(/.*)
-Все от второго до последнего /
было исключено при сопоставлении с оставшимся после него шаблоном.
\1graphics\2
-Были созданы два групповых матча, мы можем вернуть их в любом порядке. Поскольку graphics
необходимо жестко закодировать после =
, мы можем вставить его сразу после возврата первого сгруппированного совпадения \1
|
-В качестве разделителей использовались вертикальные черты, поскольку сами данные содержат косую черту '/', которая будет конфликтовать с seds
разделителями по умолчанию.
Выход
$ sed -E 's|(img src=").[^"]*(/.*)|\1graphics\2|' input_file
<img src="graphics/line.jpg"/>