Как при единовременном запуске bash скрипта не переписывать переменные?
Доброго времени суток.
Сейчас есть необходимость написать маленькую утилитку на bash.
Но столкнулся с проблемой. В скрипте используется очень много переменных и если несколько человек запустят скрипт одновременно, то соотвественно тот кто запустил последним будет мешать работе первого переписывая значения переменных.
Как пример:
Есть переменная number в нее записывается номер объекта из базы при выполнении поиска.
Естественно когда два сотрудника запустили скрипт, первый выполнил запрос и значение переменной number стало равно 100, далее значение этой переменной используется и не раз.
Но когда второй сотрудник тоже выполняет запрос, он переписывает значение переменной. Тем самым мешает работе первого сотрудника.
Можно ли как-то используя bash изолировать сотрудников? Чтобы они не мешали друг другу.
Обычные переменные. На сколько помню, bash не делит переменные на типы. Чаще всего числовые, но есть парочка и строчных.
Хмм.... я правильно понимаю, что используя lockfile, я могу пихать все переменные в файл tmp/что-то.lock и делать проверку, если этот файл уже залочен, то делать новый tmp/что-то2.lock и так далее. И получается каждый сотрудник будет работать уже только со своими значениями не мешая друг другу?
Основная идея lockfile в том, что он может предотвратить запуск скрипта, если он уже запущен, но не завершен. Т.е. второй сотрудник не сможет запустить скрипт, пока он запущен первым сотрудником.
Андрей Буров, посидев и подумав, понял, что вопрос был изначально не правильно задан.
Переменные ни у кого не затираются. Просто не которые данные писались во временные файлы, которые как раз таки перезаписывались.
Проблему решил через $RANDOM.
По идее они и так не будут перезаписываться: каждый скрипт запускается в своем процессе bash, и если переменные не экспортировать проблемы быть не должно. Если надо ограничить колличество одновременно запущенных скриптов - то flock может помочь.