Здравствуйте
имеется непонятная проблема, полагаю связанная с пробелами
скрипт:
#!/bin/shCDVOLU=$(df | sed -ne "s,^$disk.*\(/Volumes.*\)$,\1,p" | grep -v store | grep -v alex)
echo $CDVOLUCDVOLUM=$(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
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", такого кода символа быть не может).
> 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`
Ох люди-человеки...
Т.е. вы как китайский программист "не доверяю конструкции a[5,5]=0 я каждому элементу в ручную присвою 0... a[0,0]=0 ; a[0,1]=0"
Либо вы еще не научились входу отличать апострофы от кавычек.
> Ох люди-человеки...
> Т.е. вы как китайский программист "не доверяю конструкции a[5,5]=0 я каждому
> элементу в ручную присвою 0... a[0,0]=0 ; a[0,1]=0"
> Либо вы еще не научились входу отличать апострофы от кавычек.ну, я не программист, а до этой конструкции дошел и правда китайским методом перебора ))
"что-то" - все спец символы не будут экранированы
'что-то' - экранировано все$VAR=FOO
' " bla bla " ' $VAR ' " bla bla " '
Даст на выходе
" bla bla " FOO " bla bla "
Пробелы оставил специально
> решил пока так
> 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