使用CGI下的Bash移除字符串中的第一个字母

3

我要尝试将网址路径传递给在cgi下运行的bash脚本。我查询了一些资料,并找到了这个链接。据我所理解,这行代码应该将变量与其值分开:

USERNAME=`echo "$QUERY_STRING" | sed -n 's/^.*username=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"

所以,阅读有关sed的内容后,我得出结论,这行代码应该足够满足我的需求:

url='echo "$QUERY_STRING" | sed "s/url=\(.*\)/\1/"'

输入是什么?

url=www.web.address.com

然而,变量get的字符串为:

echo "$QUERY_STRING" | sed "s/url=(.*)/\1/" 如果我试图去掉撇号,我会得到一个空变量。请注意,如果我只运行echo命令,我就能得到所需的效果。

我该如何分离出url的值?


你需要反引号 \``(ASCII 96),而不是普通的单引号 '。作为替代方案,可以使用 url=$(commands ...)`。 - tripleee
1个回答

2

您可以使用参数扩展而不需要使用 sed

echo "${QUERY_STRING##*=}"

将一个变量设置为该值:

url=${QUERY_STRING##*=}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接