1

Я хотел бы поставить в очередь некоторые сценарии bash для файла, который я могу изменить. Чтобы я запустил этот файл «lauchscripts.py» или «lauchscripts.sh», который содержит команды для запуска сценариев:

1:> source folder1/script1.sh 
2:> source folder2/script2.sh
3:> source folder3/script3.sh 
4:>

Так что:1) когда я запускаю это, он запускает script1.sh, затем, когда он заканчивает, запускает script2.sh и так далее. 2) в любой момент во время работы я могу добавить строки в файл "lauchscripts", которые будут выполнены позже. Допустим, во время выполнения script3.sh (строка 3), если я добавлю в строку 4 команду:

1:> source folder1/script1.sh 
2:> source folder2/script2.sh
3:> source folder3/script3.sh 
4:> source folder4/script4.sh

Эта строка выполнит script4.sh после завершения script3.sh

Это возможно?

Спасибо

1 ответ1

0

Если ваш файл содержит имена самих сценариев, а не код, вы можете сделать это легко и безопасно:

while read -r -u 9
do
    . "$REPLY"
done 9< scripts.txt

Как и в случае большинства сценариев хаков, здесь есть много предостережений (и даже больше, если вы read код и eval его):

  1. Если дескриптор файла 9 (-u 9) используется для чего-либо в любом из сценариев, все ставки отключены.
  2. Если какой-либо из сценариев устанавливает какие-либо переменные, этот контекст не будет очищен.
  3. После прочтения последней строки scripts.txt цикл завершается.

Лучшим решением было бы запустить сценарии, которые вы прочитали, просто удалив точку. Чтобы это работало, пути сценариев должны содержать хотя бы одну косую черту, иначе сценарии должны быть в вашей PATH .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .