Case语句未显示任何输出

时间:2014-02-21 08:18:05

标签: unix case-statement

我正在尝试执行以下脚本,

  data=$(printf "%s " $(find output.log -type f  -exec grep 'ACTIVE\| NOT ACTIVE' {} \; | awk '{print $1}'))
    status=`find output.log -type f  -exec grep 'ACTIVE\| NOT ACTIVE' {} \; | awk '{print $3}'`

    case "$data" in
    ("Instance1")

            echo "Status for Instance1 is : $status";
       ;;
    ("Instance2")

            echo "Status for Instance2 is : $status";
       ;;
    "") echo "empty things"
    ;;
    esac

但它没有显示任何输出..也许我在我的脚本中遗漏了一些东西(可能很多)

我在上面的脚本中使用的logfile是ie。 output.log

INSTANCE_NAME    OPEN_STATUS       STATUS 
---------------- ------------ ----------------- 
Instance1    OPEN           ACTIVE 

Instance2    OPEN           NOT ACTIVE

有谁能告诉我上面的脚本有什么问题?

谢谢,

1 个答案:

答案 0 :(得分:1)

您不会遍历您的参赛作品,因此您永远不会拥有数据" Instance1"但是" Instance1 Instance2"。 您可能需要以下内容:

items=$(grep -0 'ACTIVE\| NOT ACTIVE' output.log | tr -s ' ' )
IFS=$'\r\n'
for it in $items; do
  data=$(echo $it | cut -d ' ' -f1 )
  status=$(echo $it | cut -d ' ' -f3- )
  case "$data" in
    ("Instance1")
    echo "Status for Instance1 is : $status";
       ;;
    ("Instance2")
        echo "Status for Instance2 is : $status";
       ;;
    "") echo "empty things"
    ;;
  esac;
done