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

bash脚本-case语句未正确计算字符串(值)

  •  1
  • noober  · 技术社区  · 8 年前

    我需要帮助找出 case 语句未正确计算我列表中的前2个值(visitor\u id,updated)。 代码如下:

    #!/usr/local/bin/bash
    file="mydatasample.out";
    linecount=$(wc -l <"$file" | awk '{ print $1 }')
    counter=1
    while IFS='' read -r column; do
      case column in
        visitor_id)
           echo "isnull($column|| '[|]' ||";;
           updated)
           echo "isnull($column::text || '[|]' ||";;
                 *)
           echo "isnull($column::text,'[null!]') || '[|]' ||";;
      esac
      if [ "$counter" -eq "$linecount" ]; then
          echo "isnull($column::text,'[null!]')) as md5sum"
      fi
      ((counter++))
    done <"$file"
    

    =mydatasample.out=

    visitor_id
    updated
    visitor_1_key
    visitor_1_value
    visitor_2_key
    visitor_2_value
    

    得到:

    isnull(visitor_id::text,'[null!]') || '[|]' ||
    isnull(updated::text,'[null!]') || '[|]' ||
    isnull(visitor_1_key::text,'[null!]') || '[|]' ||
    isnull(visitor_1_value::text,'[null!]') || '[|]' ||
    isnull(visitor_2_key::text,'[null!]') || '[|]' ||
    isnull(visitor_2_value::text,'[null!]')) as md5sum
    

    期望:

    isnull(visitor_id|| '[|]' ||
    isnull(updated::::text || '[|]' ||
    isnull(visitor_1_key::text,'[null!]') || '[|]' ||
    isnull(visitor_1_value::text,'[null!]') || '[|]' ||
    isnull(visitor_2_key::text,'[null!]') || '[|]' ||
    isnull(visitor_2_value::text,'[null!]')) as md5sum
    

    因此,这是我想计算的第一(2)个值,但目前为止无法计算。谢谢你的帮助。

    1 回复  |  直到 8 年前
        1
  •  3
  •   choroba    8 年前

    case 不像 for ,不解释 column $column (因为 对于 需要知道要分配给的变量的名称,而 案例 需要知道比较的值)。

    你可能想要

    case "$column" in
    
    推荐文章