迭代函数的输出

问题描述 投票:0回答:1

下面是函数,它给出了大于值4的目录。(ver = 4)

#!/bin/ksh

declare -a folders_res
declare -a dirs

check_minor_version(){
  dirs=($(find ${my_directory}/${my_dir} -type d -printf "%f\n" | sed '1d' |sort))

  for i in "${dirs[@]}"; do
    if [ "$i" -gt "${ver}" ]; then
       folders_res+=("$i")
    fi
  done

  if [ ${#folders_res[@]} -eq 0 ]; then
    echo ${ver}
  else
    echo ${folders_res[@]}
  fi
}

函数按预期工作,并给出输出值5 6 7

但是在'for'循环中调用函数输出时,我收到以下消息 - “无法打开文件”5 6 7 / my.sql“”

for i in "$(echo $(check_minor_version) )"; do 
 ${sqlplus} username/password@service_id << EOF
 SET WRAP OFF
 @$i/my.sql
 exit;
EOF
done

是不是可以在ksh中迭代函数的输出,或者我做了些傻事,谢谢。

shell ksh
1个回答
0
投票

你应该删除引号",如下所示:

for i in $(echo $(check_minor_version) ); do 
...

并删除echo,这是无用的:

for i in $(check_minor_version); do 
...
© www.soinside.com 2019 - 2024. All rights reserved.