Используйте window.history.pushState("object or string", "Title", "/new-url")
, но он по-прежнему отправляет новый запрос url на сервер
Не проверено, поскольку вы не предоставили ни одного примера ввода / вывода для тестирования, но это может быть то, что вы ищете:
sed -i 's/\(select dbms_metadata.get_ddl('\''PACKAGE'\'',\).*/\1'"${var}"','\''PRC_BNE_JZ'\'') from dual;/' backup_script.sql
Не используйте |
в качестве разделителя, так как метасимвол ERE и так делает ваш код в лучшем случае запутанным для чтения и может вызвать проблемы, если / когда вы решите использовать ERE позже (через -E
arg).
Всегда используйте одинарные кавычки вокруг сценариев и строк, если у вас нет очень конкретной причины, почему вы не должны этого делать, и полностью понимаете все последствия.
Я делаю все в одинарных кавычках, чтобы избежать странных расширений. Чтобы в строке была одинарная кавычка, я использую '\''
, как в ' string '\'' rest of string '
. Чтобы иметь переменную, я использую '"$var"'
, как в ' string '"$var"' rest of string
, чтобы она правильно раскрылась и соединилась с остальной частью строки.
Следующие работы:
> var=var
> echo "select dbms_metadata.get_ddl('PACKAGE'," |
> sed 's|\(select dbms_metadata.get_ddl('\''PACKAGE'\'',\).*|\1'\'"${var}"\'','\''PRC_BNE_JZ'\'') from dual;|'
select dbms_metadata.get_ddl('PACKAGE','var','PRC_BNE_JZ') from dual;
Но, вероятно, использовать "
, вероятно, легче в этом случае, поскольку строка использует '
везде, как в:
sed "s|\(select dbms_metadata.get_ddl('PACKAGE',\).*|\1'${var}','PRC_BNE_JZ') from dual;|"
Ошибка исходит от оболочки, которая не может разобрать аргументы. Ex. для следующего:
> echo abc)
main.sh: line 2: syntax error near unexpected token `)'
main.sh: line 2: `echo abc)'
В вашей команде происходит следующее:
sed -i " bla bla "'${var}','PRC_BNE_JZ') from dual;"|" backup_script.sql
^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^ - could be 4th argument
^ - unquoted `)` is parsed by bash, as in subshell `( ... )`
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - 2nd argument
^^ - 1st argument to sed command
^^^ - run sed command