The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Проблема с пробелами в shell"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Проблема с пробелами в shell"  –1 +/
Сообщение от alexey_and (ok) on 19-Янв-16, 21:22 
Здравствуйте
имеется непонятная проблема, полагаю связанная с пробелами
скрипт:
#!/bin/sh

CDVOLU=$(df | sed -ne  "s,^$disk.*\(/Volumes.*\)$,\1,p" | grep -v store | grep -v alex)
echo $CDVOLU

CDVOLUM=$(echo $CDVOLU | sed "s/ / /g")/   #попытка заменить пробелы на  "%2O"

echo $CDVOLUM

echo curl -H Content-Type: application/json -X POST -d {"jsonrpc":"2.0","id":"1","method":"Player.Open","params":{"item":{"directory":"'$CDVOLUM'"}}} http://192.168.1.5:8081/jsonrpc

echo `curl -H Content-Type: application/json -X POST -d {"jsonrpc":"2.0","id":"1","method":"Player.Open","params":{"item":{"directory":"'$CDVOLUM'"}}} http://192.168.1.5:8081/jsonrpc`

результат:
sh-3.2# ./cd1.sh
/Volumes/Rocket Ride
/Volumes/Rocket%2ORide/
curl -H Content-Type: application/json -X POST -d jsonrpc:2.0 id:1 method:Player.Open params:{item:{directory:'/Volumes/Rocket%2ORide/'}} http://192.168.1.5:8081/jsonrpc
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (6) Could not resolve host: application
curl: (6) Could not resolve host: id
curl: (6) Could not resolve host: method
curl: (3) [globbing] nested brace in column 14
100    87  100    76  100    11  90800  13142 --:--:-- --:--:-- --:--:-- 90800
{"error":{"code":-32700,"message":"Parse error."},"id":null,"jsonrpc":"2.0"}

пробел меняется корректно, но ссылку все равно не съедает
если пробел не менять, все то же самое - parse error
когда в переменной нет пробела, отрабатывает корректно

прокатывает так:
echo `curl -H Content-Type: application/json -X POST -d '{"jsonrpc":"2.0","id":"1","method":"Player.Open","params":{"item":{"directory":"/Volumes/Rocket Ride/"}}}' http://192.168.1.5:8081/jsonrpc`

но если заменить /Volumes/Rocket Ride/ на переменную, опять parse error

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проблема с пробелами в shell"  +/
Сообщение от StreSS.t (ok) on 20-Янв-16, 17:53 
man bash
И искать что такое { }
и что такое ' '
У вас получило что {"json... - не экранировать, а переменную
$CDVOLUM - экранировать
echo `curl -H Content-Type: application/json -X POST -d '{"jsonrpc":"2.0","id":"1","method":"Player.Open","params":{"item":{"directory":"'$CDVOLUM'"}}}' http://192.168.1.5:8081/jsonrpc`

Замена %20 не нужна (у Вас почему-то "2O", такого кода символа быть не может).

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Проблема с пробелами в shell"  +/
Сообщение от alexey_and (ok) on 20-Янв-16, 18:16 
> man bash
> И искать что такое { }
> и что такое ' '
> У вас получило что {"json... - не экранировать, а переменную
> $CDVOLUM - экранировать
> echo `curl -H Content-Type: application/json -X POST -d '{"jsonrpc":"2.0","id":"1","method":"Player.Open","params":{"item":{"directory":"'$CDVOLUM'"}}}'
> http://192.168.1.5:8081/jsonrpc`
> Замена %20 не нужна (у Вас почему-то "2O", такого кода символа быть
> не может).

конечно %двадцать, так написал потому что форум не берет
решил пока так
echo `curl --silent -H Content-Type: application/json -X POST -d "{\"jsonrpc\":\"2.0\",\"id\":\"1\",\"method\":\"Player.Open\",\"params\":{\"item\":{\"directory\":\"$CDVOLU\"}}}" http://192.168.1.5:8081/jsonrpc`

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Проблема с пробелами в shell"  +/
Сообщение от StreSS.t (ok) on 20-Янв-16, 18:20 
Ох люди-человеки...
Т.е. вы как  китайский программист "не доверяю конструкции a[5,5]=0 я каждому элементу в ручную присвою 0... a[0,0]=0 ; a[0,1]=0"
Либо вы еще не научились входу отличать апострофы от кавычек.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Проблема с пробелами в shell"  –1 +/
Сообщение от alexey_and (ok) on 20-Янв-16, 18:23 
> Ох люди-человеки...
> Т.е. вы как  китайский программист "не доверяю конструкции a[5,5]=0 я каждому
> элементу в ручную присвою 0... a[0,0]=0 ; a[0,1]=0"
> Либо вы еще не научились входу отличать апострофы от кавычек.

ну, я не программист, а до этой конструкции дошел и правда китайским методом перебора ))

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Проблема с пробелами в shell"  +/
Сообщение от StreSS.t (ok) on 20-Янв-16, 18:27 
"что-то" - все спец символы не будут экранированы
'что-то' - экранировано все

$VAR=FOO
' " bla bla " ' $VAR ' " bla bla " '
Даст на выходе
" bla bla "  FOO " bla bla "
Пробелы оставил специально

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Проблема с пробелами в shell"  +/
Сообщение от ALex_hha (ok) on 16-Апр-16, 18:03 
> решил пока так
> echo `curl --silent -H Content-Type: application/json -X POST -d "{\"jsonrpc\":\"2.0\",\"id\":\"1\",\"method\":\"Player.Open\",\"params\":{\"item\":{\"directory\":\"$CDVOLU\"}}}"
> http://192.168.1.5:8081/jsonrpc`

ужос, а чем не угодило?


curl --silent -H Content-Type: application/json -X POST -d '{"jsonrpc":"2.0","id":"1","method":"Player.Open","params":{"item":{"directory":"'$CDVOLU'"}}}"' http://192.168.1.5:8081/jsonrpc

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру