Script shell de décodage d'URL

1

Comment puis-je stocker la chaîne décodée url dans une variable à l'aide d'un script shell

#!/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

J'essaye de stocker la chaîne décodée dans la variable nommée décodée.

Tarik Setia
la source

Réponses:

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"

C'est:

  • évitez les alias dans les scripts car leur fonctionnement n'est pas garanti (certaines implémentations sh telles que bash ignorent les alias lorsqu'elles ne sont pas interactives)
  • citez vos variables. Laisser une variable sans guillemets est l’opérateur split + glob dans les shells.
  • L’opérateur qui substitue la sortie d’une commande est $(...)
  • La syntaxe d'attribution de variable dans les shells de type Bourne n'autorise pas les blancs =, elle echo = xappelle la echocommande avec =et en xtant qu'arguments, sans affecter xla echovariable.
  • Vous ne pouvez pas utiliser echopour afficher des données arbitraires, utilisez printfplutôt.
Stéphane Chazelas
la source