Shell Ksh中第*)`行的语法错误?
我试图在Unix中执行以下代码,并得到上述错误 请帮我更正代码Shell Ksh中第*)`行的语法错误?,shell,unix,case,ksh,Shell,Unix,Case,Ksh,我试图在Unix中执行以下代码,并得到上述错误 请帮我更正代码 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 ;; i
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
您的脚本中是否有像回车符(
\r
)这样的有趣字符?
请运行od-c yourscript
查找,如果是这样,请使用更好的编辑器来显示有趣的字符(vim)或dos2unix yourscript
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
可能更快(取决于服务器的使用)
添加“export”使其成为一个常量字符,你能用上面的代码详细说明吗当我复制显示的代码时,我从
ksh
(在Mac OS X 10.9 Mavericks上)得到一个警告,即反引号机制应该改为$(…)
(正式地说:xyz.ksh:警告:第1行:`……`过时,使用$(…)
其中我调用了脚本xyz.ksh
,并在“调试”模式下运行它(ksh-vn xyz.ksh
;无执行,详细)。当我运行它时,它会显示“No Dir”,这是合理的。问题不在您显示的代码中,或者您安装了一个非常糟糕的ksh
。这不是实际的代码,也不是实际的错误消息。第5行没有*
,并且一个单独的反勾看起来像是一条截断的消息(可能是因为这样)。请绝对准确地描述代码和错误消息。
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}"
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/'`"