gpt4 book ai didi

linux - CGI脚本中变量中的变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:16:11 26 4
gpt4 key购买 nike

有这样一个脚本:

NAME = `echo "$QUERY_STRING" | sed -n 's/^.*post=\([^&]*\).*$/\1/p' | sed "s/%20/ /g"`
RES = `psql -U user -d db -t -c "SELECT tabl FROM tablica WHERE name = '$NAME'"`
echo $RES

一切正常(这意味着 GET 请求正常)。但是数据库中的数据没有走。

问题是查询中的参数值 WHERE NAME 没有被设置,我得到一个语法错误。

我在网上看了很多文章,但没有找到关于反引号中的变量的内容。

我该如何解决这个问题?

最佳答案

在变量赋值中,不允许在等号周围放置空格。而且你通常不应该使用反引号,而更喜欢 $() 形式,用它来处理引用更容易。

NAME=$(echo "$QUERY_STRING" | sed -n 's/^.*post=\([^&]*\).*$/\1/p' | sed "s/%20/ /g")
RES=$(psql -U user -d db -t -c "SELECT tabl FROM tablica WHERE name = '$NAME'")
echo "$RES"

请注意,您正在做的事情非常不安全,您需要对您的输入进行更强的验证。

关于linux - CGI脚本中变量中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29727889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com