Windows bash скрипт для запуска чего-либо из WSL - PullRequest
1 голос
/ 10 февраля 2020

Я пытаюсь записать сценарий Windows bash в:

  1. Start Windows Подсистема для Linux (WSL) и
  2. cd в WSL на "../myfolder/"
  3. запустить ./foo first_parameter second_parameter
  4. Дождаться окончания и выйти из WSL
  5. cd в Windows на" ../myWinFolder/"
  6. запустить Foo.exe parameter
  7. дождаться завершения

Это моя попытка:

bash -c "cd ../myFolder/ && ./foo first_parameter second_parameter"
cd ..
cd myWinFolder
START /WAIT Foo.exe parameter

Но, к сожалению, CMD не ждет WSL для fini sh перед запуском EXE.

Что я могу сделать?

1 Ответ

1 голос
/ 10 февраля 2020

Я рад, что взаимодействие между dos и WSL на самом деле ожидает завершения команд sh. Попробуйте следующее:

В файле с именем runit.bat

echo bat01
bash -c "echo bat02; cd ./bash/; ./runit.sh; echo bat03"
echo bat04

В подпапке с именем ./bash/ вставьте следующее в файл с именем runit. sh

echo sh01 
sleep 2s 
echo sh02 

Когда вы запускаете runit.bat изнутри dos, вы увидите 2 секунды ожидания

Вы не указали, что находится внутри вашего скрипта ./foo. Я подозреваю, что он запускает задачу в фоновом режиме или запускает что-то, что немедленно возвращается. Это можно смоделировать, поместив & после сна, чтобы он работал в фоновом режиме в пределах wsl sleep 2s &. Когда вы сделаете это, вы увидите, что в выполнении скрипта нет паузы.

Так что я бы проверил ./foo, возможно, добавил бы внутри него несколько операторов отладки echo и сначала запустил бы его из WSL, чтобы убедиться, что что он действительно ожидает завершения всех команд, прежде чем завершится.

...