如何使用 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
命令,而不是分配给变量。=
x
x
echo
- 您不能使用
echo
来显示任意数据,printf
而是使用。