代码之家  ›  专栏  ›  技术社区  ›  James

Bash比较while循环内不工作的字符串

  •  0
  • James  · 技术社区  · 7 年前

    我创建了这个bash脚本,似乎无法理解为什么if块中的代码没有执行。

    db_instances_status="creating" 
    db_instances_status=$(makes api request to get value)
    
    COUNTER=0
    while [ $COUNTER -lt 1 ]; do
      db_instances_status=$(makes api request to get value)
    
      echo "$db_instances_status" # echos available
    
      if [ "available" = "$db_instances_status" ]; then
         # code never makes it here
         dosomething()
         break;
      fi
      sleep 30
    done
    

    我从这里引用了一些例子 How to compare strings in Bash

    在这里 https://tecadmin.net/tutorial/bash/examples/check-if-two-strings-are-equal/

    2 回复  |  直到 7 年前
        1
  •  1
  •   John3136    7 年前

    你也不能去 if 语句,否则变量不包含您认为它所包含的内容。

    这段代码将有助于调试。。。

    while [ $COUNTER -lt 1 ]; do
      echo "[DEBUG] getting status"
      db_instances_status=$(makes api request to get value)
      echo "[DEBUG] X${db_instances_status}X"
      echo "$db_instances_status" # echos available
    
      if [ "available" = "$db_instances_status" ]; then
    
    推荐文章