Ksh中的行*)`语法错误?

时间:2013-11-29 09:28:25

标签: shell unix case ksh

我试图在Unix中执行以下代码并获得Above Error,

请帮我改正代码

SERVER_NM=`uname -n`
case $SERVER_NM in

  infad1)   export ETL_SYS=TST
         ;;
  infasa1)   export ETL_SYS=TST
         ;;
  infasb1)   export ETL_SYS=TST
         ;;
  infap1)   export ETL_SYS=PRD
         ;;
  infap2)   export ETL_SYS=PRD
         ;;
  infap3)   export ETL_SYS=PRD
         ;;
  infap4)   export ETL_SYS=PRD
         ;;
  *)        echo "No Dir";;
esac

当我执行此即时获取

 unexpected4]: syntax error at line 5 : `in and im using !/usr/bin/ksh

3 个答案:

答案 0 :(得分:0)

你的剧本中是否有可能有回车(\r)等有趣的字符? 请运行od -c yourscript查找,如果是,请使用可以显示有趣字符(vim)或dos2unix yourscript的更好的编辑器。

答案 1 :(得分:0)

export SERVER_NM=`uname -n`
case $SERVER_NM in
  infad1|infasa1|infasb1)  export ETL_SYS=TST ;;
  infap1|infap2|infap3|infap4)  export ETL_SYS=PRD  ;;
  *)        echo "No Dir" ;;
esac
echo $ETL_SYS

答案 2 :(得分:0)

SERVER_NM="`uname -n`"
echo "${SERVER_NM}" | sed 's/infad1.*/PRD/;t;s/infasa1.*/PRD/;t;s/infasb1/TST/;t;s/infap[1-4].*/PRD/;t;s/.*/No Dir/' | read Tempo
export ETL_SYS="${Tempo}"

可能更快(取决于使用SERVER_NM)

export ETL_SYS="`uname -n | sed 's/infad1.*/PRD/;t;s/infasa1.*/PRD/;t;s/infasb1/TST/;t;s/infap[1-4].*/PRD/;t;s/.*/No Dir/'`"