Script de shell de decodificação de URL

1

Como posso armazenar a string decodificada por url em uma variável usando o shell script

#!/bin/sh
alias urldecode='python -c "import sys, urllib as ul;print ul.unquote_plus(sys.argv[1])"'
str="this+is+%2F+%2B+%2C+.+url+%23%24coded"

decoded = ${urldecode $str}
echo $decoded

Estou tentando armazenar uma string decodificada em uma variável com o nome decodificado.

    
por Tarik Setia 21.05.2015 / 23:15

1 resposta

4

#!/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 comando echo com = e x como argumentos, não atribuindo x à echo variable.
  • Você não pode usar echo para exibir dados arbitrários, use printf .
por 21.05.2015 / 23:20