2013-08-29 59 views
1

我写了一个shell脚本,它在运行bash shell的服务器上执行数据操作。函数失败 - shell脚本从Bash转换为Korn

我的脚本有哪些ZIP文件

function getCTLfile() { 
    for i in ${Array[@]}; do 
    if [[ `echo ${i}|awk -F . '{print $NF}'` == "ctl" ]]; then 
     echo "${i}" 
    fi 
    done 
} 

内检索数据的功能,它的伟大工程,但是这款机器的硬件有故障所以我们的系统管理员要求我端口我的代码到另一台服务器上运行的Korn shell。

当我运行我的脚本,它失败了我的功能!即使我从命令行输入它。

$ function getCTLfile() { 
-ksh: syntax error: `(' unexpected 

我需要在任何地方更改语法吗?我做了一些研究,似乎一切都应该起作用。

+1

代码评论:'if [[“$ i”== * .ctl]]'更清晰。你几乎肯定要引用'“$ {Array [@]}”' –

+2

'case $ i in * .ctl)echo“$ i”;; esac'是一个更简单,便携,和惯用的。 – tripleee

回答

6

ksh中的函数声明语法或者使用function关键字括号,但不能同时使用两者。省略括号或function关键字,它应该工作。

+0

该死的。我没有注意到那个细节。答对了。接受并投票决定。我疯了!谢谢!!! – Chris

+2

@Chris:顺便提一下,请注意ksh93中两种语法在功能上存在差异,特别是声明('typeset')变量的范围。 – cdarke