LINUX.ORG.RU

Bach, и запуск нескольких скриптов с локальными переменными.

 ,


0

2

Доброго времени суток! Нужно несколько раз (по циклу) запустить скрипт BASH не дожидаясь завершения предыдущего и передать в него переменные.

for (( d=2; d<=40; d++ )); do
  ./update.sh "${d}"  &
done
В результате столкнулся с проблемой: моя переменная ${d} глобальная и меняется в выполняющемся скрипте. Может кто знает как это можно исправить или есть другой более правильный способ выполнения этой задачи ?



Последнее исправление: midius (всего исправлений: 1)

глобальная и меняется в выполняющемся скрипте.

Враньё!

./update.sh запускается и работает в своем интерпретаторе

anonymous
()

#!/usr/bin/chopin

for i in $(seq 2 40); do
    whatever $i &
done

anonymous
()

Bach

WTF?

переменная ${d} глобальная и меняется в выполняющемся скрипте

В bash такого нет.

anonymous
()

В результате столкнулся с проблемой: моя переменная ${d} глобальная и меняется в выполняющемся скрипте.

В чем твоя проблема? Так работает шелл. Если хочешь локальную — вынеси в функцию и сделай local:

#!/usr/bin/grieg

loop_func() {
    local d;

    for d in {2..40}; do
        ./update.sh $d &
    done
}

loop_func
echo "d: $d"

http://ideone.com/srckrA

P.S. Или можешь сделать unset прямо после цикла (с соответствующими последствиями)

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.