功能失败 - shell脚本从Bash转换为Korn

Chr*_*ris 1 bash ksh

我编写了一个shell脚本,在运行bash shell的服务器上进行数据操作.

我的脚本有一个函数可以检索ZIP文件中的数据

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

它工作得很好但是这台机器硬件有问题所以我们的系统管理员要求我将我的代码移植到运行Korn shell的另一台服务器上.

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

$ function getCTLfile() {
-ksh: syntax error: `(' unexpected
Run Code Online (Sandbox Code Playgroud)

我需要在任何地方更改语法吗?我做了一些研究,似乎一切都应该有效.

Emm*_*met 6

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

  • @Chris:顺便提一下,请注意ksh93中两个语法之间的功能有所不同,特别是声明(`typeset`)变量的范围. (2认同)