Windows bash скрипт для запуска чего-либо из WSL

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

  1. Запустите подсистему Windows для Linux (WSL) и
  2. перейдите в WSL к "../myfolder/"
  3. запустить ./foo first_parameter second_parameter
  4. Дождитесь окончания и выйдите из WSL
  5. перейдите в 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 перед запуском EXE.

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

Всего 1 ответ


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

В файле с именем 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 из runit.bat вы увидите 2 секунды ожидания

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

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


Есть идеи?

10000