Как я могу заставить bash ждать завершения процесса, прежде чем продолжить работу со сценарием? [закрыто]

У меня есть скрипт, который используетsed искать и заменять простой.yaml файл и вывод.sh файл, который затем должен быть извлечен с источником. Моя проблема в том, что я могуне могу понять, как ждать, покаsed выводит.sh перед звонком.source

sed -e 's/:[^:\/\/]/="/g;s/$/"/g;s/ *=/=/g' in.yaml > out.sh
source out.sh

РЕДАКТИРОВАТЬ

Я получаю эту ошибку

script.sh: line 2: out.sh: No such file or directory

END EDITI '

мы пытались

sed -e 's/:[^:\/\/]/="/g;s/$/"/g;s/ *=/=/g' in.yaml > out.sh
wait $!
source out.sh

, но я считаю, что это требует, чтобы процесс был в BG. Я пытался бросить его в BG, но я получаюbg: no job control сообщение об ошибке. Я читал, что игнорировать это плохая практика, поэтому яЯ пытаюсь избежать этого.

Как я могу сделатьsource подожди?sed

 Curtis Blackwell02 нояб. 2012 г., 03:47
Но это невывести файл перед вызовом.source
 John313602 нояб. 2012 г., 03:41
Ты не долженне нужно ничего делать - он закончитsed линия, прежде чем двигаться по умолчанию.

Ответы на вопрос(2)

Решение Вопроса

Ты нене нужно делать ничего, кроме:

sed -e 's/:[^:\/\/]/="/g;s/$/"/g;s/ *=/=/g' in.yaml > /path/to/out.sh
source /path/to/out.sh

оболочка по умолчанию запускает команды одна за другой, поэтому она будет работатьsource когдаsed закончу.

Для вашей ошибки, вы должны поставить полный путьout.sh в вашей исходной команде.

 Curtis Blackwell02 нояб. 2012 г., 03:43
Тогда почему нетэто работает? Может ли это быть в пределах утверждения if повлиять на это?
 user338888427 мая 2014 г., 17:27
Я столкнулся с подобной проблемой, и использование полного пути сработало! но можете ли вы объяснить, чтопроисходит на бэкэнде? исполнение должно быть линейным ... и даже с относительным путем, это должно работать в моем понимании ... Пожалуйста, просветите нас!

source Команда ищет исходный файл в вашей переменной PATH, когда его имя не содержит косых черт (но его нужно только прочитать;не должен быть исполняемым). Вы, вероятно, неу вас нет текущего каталога в вашем PATH.

Пытаться:

source ./out.sh
 Curtis Blackwell02 нояб. 2012 г., 03:57
бах! проблема была в пути вывода команды sed. #shame

Ваш ответ на вопрос