Пишу скрипт на bash-е. Необходимо конвертировать строку в вид urlencoded как это делает, к примеру, urlencode() в PHP.
Использование иных скриптовых языков (python, php, etc) не вариант. Необходимо простое и сравнительно быстрое (по скорости выполнения) решение. Также, желательно чтобы утилиту, выполняющую операцию, можно было поставить в большинстве популярных *nix систем, т.е. необходима хотя бы минимальная переносимость.
Например, есть утилита ascii2uni/uni2ascii, но она не кодирует обычные (английские) буквенные символы; мне же нужен результат как при полноценном urlencode (для application/x-www-form-urlencoded).
Варианты?
#!/usr/bin/perl
use URI::Encode qw(uri_encode uri_decode);
my $arg=shift,$decode=shift;
if ($decode) {
print uri_decode($arg);
} else {
utf8::decode($arg);
print uri_encode($arg);
}
print "\n";
первый агумент - строка, второй - если есть, то строку декодировать, если нет - кодировать.
модуль URI::Encode написан на perl, маленький, его можно установить из репозитария вашего дистра, используя cpan или скопипастить из исходника. perl есть практически в каждой системе.