Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save CesarCapillas/d3317213413f2913d99e2a301cad0ce0 to your computer and use it in GitHub Desktop.

Select an option

Save CesarCapillas/d3317213413f2913d99e2a301cad0ce0 to your computer and use it in GitHub Desktop.
Bash urlencode and urldecode
#!/bin/bash
urlencode() {
# Usage: urlencode string
local l="${#1}"
for (( i = 0 ; i < l ; i++ )); do
offsetByte=${1:i:1}
case "$offsetByte" in
[a-zA-Z0-9.~_-]) printf "$offsetByte" ;;
' ') printf + ;;
*) printf '%%%X' "'$offsetByte"
esac
done
}
urldecode() {
# Usage: urldecode string
data=${1//+/ }
printf '%b' "${data//\%/\x}"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment