#!/bin/sh -
urldecode() {
python -c "import sys, urllib as ul;print ul.unquote_plus(sys.argv[1])" "$1"
}
str="this+is+%2F+%2B+%2C+.+url+%23%24coded"
decoded=$(urldecode "$str"}
printf '%s\n' "$decoded"
Isto é:
- evite aliases em scripts, pois não é garantido que funcionem (algumas implementações sh como bash ignoram aliases quando não interativas)
- cite suas variáveis. Deixar uma variável sem aspas é o operador split + glob em shells.
- O operador para substituir a saída de um comando é
$(...)
- a sintaxe de atribuição de variável em shells semelhantes a Bourne não permite espaços em branco
=
,echo = x
significa chamar o comandoecho
com=
ex
como argumentos, não atribuindox
àecho
variable. - Você não pode usar
echo
para exibir dados arbitrários, useprintf
.