Если вы используете версию systemd старше 229, вам может потребоваться использовать 0 вместо бесконечности, чтобы отключить тайм-аут.
Нет причин использовать heredoc в этом контексте.
Приведенный ниже код отлично работает с bash версии 4.2.26:
#!/bin/bash
function f()
{
echo $1;
};
for i in {1..20}; # This works for a range of integers, but for unrelated values, you can use "i in x y z" format
do
f $i;
done;
Если у вас все еще есть проблемы, пожалуйста, укажите версию bash и полный код, который вы тестируете.
Потеряйте heredoc , и он должен работать нормально:
#!/bin/bash
for ((i=0; i<=20;i++));do
MYFUNCTION "-$i"
done
в качестве альтернативы вы можете использовать одинарный heredoc , который предотвратит $ i
] из , интерполированного из внешнего контекста, где он не установлен :
#!/bin/bash
bash << '_EOF_'
for ((i=0; i<=20;i++));do
MYFUNCTION "-$i"
done
_EOF_
, но вряд ли есть веская причина для запуска другого bash из только что запущенного процесса bash.