LINUX.ORG.RU

[пора идти спать]bash, строка, символ


0

1

Знаю, задача до ужаса тривиальная, но...

в $f - url, перед ним находится «/», т.е. он выглядит как: «/http://linux.org.ru/»

$e `wget -O - ${f:1}`

выдает:

sh: Bad substitution

Что мне делать?

Видел решения для отбрасывания скобок на sed'e, но т.к. сам данный скрипт у меня уже находится в кавычках (bash -c 'скрипт'), я не осилил...

От собственной криворукости бъюсь над проблемой второй час. Жду помощи от доброго и всемогущего лора.

ЗЫ: не ругайте, пожалуйста, если я что непонятно сказал - спрашивайте...

★★★★★

#!/bin/bash
f=/http://ya.ru/
wget -O - ${f:1}

Чего не так-то?

uspen ★★★★★ ()
Ответ на: комментарий от uspen
#!/bin/bash
f=/http://ya.ru/
e=`wget -O - ${f:1}`
echo "$e"

И так работает.

uspen ★★★★★ ()

>sh: Bad substitution

Я так думаю в твоей системе в качестве sh выступает dash, а не сабж

madcore ★★★★★ ()
Ответ на: комментарий от madcore

Я так думаю в твоей системе в качестве sh выступает dash, а не сабж

создал символьную ссылку с sh на bash - заработало. спасибо!

derlafff ★★★★★ ()
Ответ на: комментарий от derlafff

>создал символьную ссылку с sh на bash

Ну зачем же так... Правильнее указать, что для скрипта требуется именно bash, как в примерах у uspen выше.

madcore ★★★★★ ()
Ответ на: комментарий от madcore

Ну во первых, мне dash вообще не нужен.

А «#!/bin/bash» не работает, может потому что мой скрипт такой?

:;while [ $? -eq 0 ];do nc -vlp 8080 -c'(r=read;e=echo;$r a b c;z=$r;while [ ${#z} -gt 2 ];do $r z;done;f=`$e $b`;h="HTTP/1.0";o="$h 200 OK\r\n"; $e `wget -O - ${f:1} `)';done
derlafff ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.