URL解码shell脚本

URL解码shell脚本

如何使用 shell 脚本将 url 解码的字符串存储在变量中

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

我试图将解码后的字符串存储在名为decoded 的变量中。

答案1

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

那是:

  • 避免在脚本中使用别名,因为这不能保证有效(某些 sh ​​实现(例如 bash)在非交互时会忽略别名)
  • 引用你的变量。 shell 中的 split+glob 运算符将变量不加引号。
  • 替换命令输出的运算符是$(...)
  • 类似 Bourne 的 shell 中的变量赋值语法不允许 周围有空格=echo = x这意味着使用和作为参数调用echo命令,而不是分配给变量。=xxecho
  • 您不能使用echo来显示任意数据,printf而是使用。

相关内容