${parameter##word}
Remove matching prefix pattern. The word is expanded to produce
a pattern just as in pathname expansion. If the pattern matches
the beginning of the value of parameter, […]
/*не соответствует началу, потому что ваш URL начинается с hnot /.
Тривиальный способ сделать то, что вы ищете (согласно вашему комментарию), это echo "$url" | rev | cut -d / -f 1 | rev. Но, конечно, это даст интересные результаты для URL, заканчивающихся косой чертой.
Другой способ сделать то, что вы хотите, это использовать шаблон */.
dirname $url
. Илиgrep -o 'http://[^/]*' <<<$url
.Ответы:
Потому что слово должно соответствовать строке, которая будет обрезана. Это должно выглядеть так:
Спасибо, Дероберт, ты направил меня в правильном направлении.
источник
Чтобы процитировать manpage:
/*
не соответствует началу, потому что ваш URL начинается сh
not/
.Тривиальный способ сделать то, что вы ищете (согласно вашему комментарию), это
echo "$url" | rev | cut -d / -f 1 | rev
. Но, конечно, это даст интересные результаты для URL, заканчивающихся косой чертой.Другой способ сделать то, что вы хотите, это использовать шаблон
*/
.источник
basename
(1) также работает с URL, так что вы можете просто сделать:источник
Смотрите также: Bash Extended Globbing , хотя в этом случае расширенный glob не является обязательным.
Выход:
file.ext
источник