我正在学习使用Bash和API,目前我遇到了与嵌套变量相关的问题。
我希望做的基本动作如下:
name="peter"; country="uk";
gender=$(http -b GET "https://api.genderize.io/?$name=peter&country_id=$uk" | jq -e '.gender');
echo $gender
输出
"male"
我想采取的完整行动如下:
while read name <&3 && read country <&4
do gender=$(http -b GET "https://api.genderize.io/?name=$name&country_id=$country" | jq -e '.gender')
echo "$name : $gender" >> namesorted.txt
sleep 0.1
done 3<namelist.txt 4<countrylist.txt
但输出为空,这意味着请求未正确发送:
Peter : null
Edouard : null
Henri : null
Anabelle : null
Nonso : null
Tom : null
我的代码出了什么问题?有没有办法让我看到代码发送的查询用于调试目的?
编辑它最终成了格式错误,正如评论中所指出的那样。谢谢!
答案 0 :(得分:0)
正如评论中指出的那样,它最终成了格式错误:
在初始脚本中使用双引号是正确的,因为它允许扩展变量:
gender=$(http -b GET "https://api.genderize.io/?$name=peter&country_id=$uk" | jq -e '.gender')
但是在我的完整脚本中,我混淆了单引号,这使得变量不会被扩展。我在原始问题中修复了它,代码可以工作。
感谢@Gordon Davidsson发现问题。