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.

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.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.