【发布时间】:2022-10-25 22:28:50
【问题描述】:
#!/bin/bash
object=$1
tenant=$2
server=$(sshpass -p 'password' ssh -tt root@ipaddress "/opt/something/sh/mysql -A 'admin_site' -e 'select id from something_servers where tenantcode=$2' | grep -o '[0-9]*'")
http -b "http://ipaddress/?app=something&t=users&v=users&server=$server&apikey=apikey&action=something.$1.list"
一切似乎都很好。变量 $server 的值应该是“24”。但是,当我在 http 请求中调用它时,它根本不起作用……老实说,我不知道。我通过回显它来测试变量的值,它是正确的。但是由于某种原因,在请求中使用它时它没有。
有任何想法吗?
【问题讨论】:
-
http命令是什么?您打算使用wget还是curl? -
如果你做
echo "http://ipaddress/?app=something&t=users&v=users&server=$server&apikey=apikey&action=something.$1.list",你会看到什么? -
为什么你使用
$1和$2而不是$object和$tenant?分配命名变量有什么意义? -
顺便说一句,您必须确保
$2已正确转义以用作 SQL 字符串文字,并且$1还必须进行 URL 编码 -
我会在打开
-x的情况下运行脚本,以查看实际传递给http命令的内容。如果这看起来不错,我会怀疑http-script 中的错误(您没有显示)。还有什么奇怪的(虽然没有错):您设置了两个变量(object和tenant),之后再也没有使用它们。