#shell #ksh
#оболочка #ksh
Вопрос:
Ниже приведена функция, которая выдает мне каталог, размер которого превышает значение 4. (ver = 4)
#!/bin/ksh
declare -a folders_res
declare -a dirs
check_minor_version(){
dirs=($(find ${my_directory}/${my_dir} -type d -printf "%fn" | 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 или я делаю что-то глупое, спасибо.
Ответ №1:
Вы должны удалить кавычки "
следующим образом:
for i in $(echo $(check_minor_version) ); do
...
А также удалите echo
, это бесполезно:
for i in $(check_minor_version); do
...