История изменений
Исправление vodz, (текущая версия) :
А не могли бы вы пояснить конструкцию функции? Любопытно)
Экое было извращение. Первое выражение у всех аргуентов-строк заменяет плюсики на проблелы, а второе у последнего аргумента заменяет все проценты на \x, тем самым делая строку для эскейпинга с опцией -e. Менее извратно будет:
urldecode() { : "${1//+/ }"; echo -e "${_//%/\\x}"; }
#!/bin/bash
urldecode() {
local t=${!1}
t=${t//+/ }
t=${t//%/\\x}
printf -v $1 "$t"
}
x="%d0%9f%d0%a0%d0%98"
urldecode x
echo "$x"
Исходная версия vodz, :
А не могли бы вы пояснить конструкцию функции? Любопытно)
Экое было извращение. Первое выражение у всех аргуентов-строк заменяет плюсики на проблелы, а второе у последнего аргумента заменяет все проценты на \x, тем самым делая строку для эскейпинга с опцией -e. Менее извратно будет:
urldecode() { : "${1//+/ }"; echo -e "${1//%/\\x}"; }
#!/bin/bash
urldecode() {
local t=${!1}
t=${t//+/ }
t=${t//%/\\x}
printf -v $1 "$t"
}
x="%d0%9f%d0%a0%d0%98"
urldecode x
echo "$x"