Расширения внутри "
работают.
С set -x
это выглядит так:
$ set -x
$ nohup sh -c " i=1; while [ $(( $CONTAINERS_COUNT )) -ge $(( i )) ]
> do
> i=$((i+1))
> date
> done &"
+ nohup sh -c ' i=1; while [ 0 -ge 0 ]
do
i=1
date
done &'
Вы l oop расширены до while [ 0 -ge 0 ]
до выполняет sh
. Таким образом, все, что видит sh
, это [ 0 -ge 0 ]
- бесконечный l oop.
Я предлагаю использовать одинарные кавычки для содержимого сценария, чтобы справиться с большинством проблем цитирования и передать среду, используя экспортированную переменную или позиционные аргументы сценария:
nohup sh -c '
CONTAINERS_COUNT=$1
i=1;
while (( CONTAINERS_COUNT >= i )); do
i=$((i+1))
date
done
' -- "$CONTAINERS_COUNT" &
Примечание: это просто seq "$CONTAINERS_COUNT" | xargs -I{} date