Как мне избежать cmd с параметрами и запросом? - PullRequest
1 голос
/ 06 апреля 2011

Вот как у меня это в скрипте.Что плохого в том, чтобы избежать его?

"curl --fail $solrIndex/update?commit=true -H \"Content-Type: text/xml\" --data-binary '<delete><query>*:*</query></delete>'"

Вот как это выполняется:

curl --fail http://localhost:8080/solr/update?commit=true -H "Content-Type: text/xml" --data-binary '<delete><query>*:*</query></delete>'
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">17</int></lst>
</response>
curl: (6) Couldn't resolve host 'text'

Что работает:

$ curl --fail http://localhost:8080/solr/update?commit=true -H "Content-Type: text/xml" --data-binary '<delete><query>*:*</query></delete>'
<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"><int name="status">0</int><int name="QTime">51</int></lst>
</response>

Ответы [ 2 ]

1 голос
/ 06 апреля 2011

Сохранение команды в массиве вместо одной строки

cmd=(curl --fail $solrIndex/update?commit=true -H "Content-Type: text/xml" --data-binary '<delete><query>*:*</query></delete>')

И выполнить его с

"${cmd[@]}"
0 голосов
/ 06 апреля 2011

Вы почти никогда не должны цитировать всю команду; процитируйте аргументы:

curl --fail "$solrIndex/update?commit=true" -H "Content-Type: text/xml" --data-binary '<delete><query>*:*</query></delete>'
...