小编Bli*_*awk的帖子

Bash cUrl 响应转换为字符串 - 在字符串比较中不会匹配“相同”字符串

while [[ "$(curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" "https://api.digitalocean.com/v2/droplets/$NEW_ID" | jq '.droplet.status')" != "active" ]]; do                         
    echo "$(curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" "https://api.digitalocean.com/v2/droplets/$NEW_ID" | jq '.droplet.status')"                                            
    echo "try again"                                                                                       
    sleep 30s                                                                                              
done
Run Code Online (Sandbox Code Playgroud)

echo 命令适当地输出“active”(一旦 Droplet 处于活动状态),但 while 语句总是失败。

在查看了有关 bash 字符串比较的其他问题后,我尝试在比较运算符的每一侧使用引号/无引号,并使用 * 来匹配可能的换行符,但问题仍然存在。

为了准确获取 echo 的内容,我将输出通过管道传输到 od。这就是我得到的:

0000000 " a c t i v e " \n 0000011
Run Code Online (Sandbox Code Playgroud)

我可以看到字符串后面的换行符,但“active”*、“active*”、active* 和“active”*(我在这里变得绝望)在它们应该匹配的时候没有成功匹配。我缺少什么?

string bash curl digital-ocean

2
推荐指数
1
解决办法
688
查看次数

标签 统计

bash ×1

curl ×1

digital-ocean ×1

string ×1