Haxe / Bash: вызов встроенной функции Bash `read` из скрипта Bash запускается из опции haxe` -cmd` - PullRequest
0 голосов
/ 31 января 2019

У меня проблемы с успешным вызовом read из скрипта, вызываемого опцией Haxe -cmd.

Я пишу среду тестирования для Haxe и хочу иметь возможность тестировать несколько целей из однойкоманда.Идея состоит в том, чтобы очистить, скомпилировать с целью, очистить терминал, запустить test / s (и отобразить результаты), дождаться нажатия клавиши, очистить результаты, скомпилировать с другой целью, очистить, запустить, подождать, очистить и т. Д..

Я столкнулся с проблемой «ожидание нажатия клавиши».Я использую встроенную Bash read, и если я запускаю скрипт прямо из терминала, он работает нормально.Но когда я вызываю скрипт, используя опцию Haxe -cmd, read не печатает подсказку или не продолжает после нажатия клавиши.

screenshot of the terminal after failure

Я попытался написатьСценарий bash представляет собой серию команд -cmd, но вместо bash он запускается через sh, и мне выдаются ошибки "/ bin / sh: 1: read: Illegal option -n" "Error: Команда завершилась с ошибкой 2".

test.hxml - вызывается вручную (haxe test.hxml)

-main   Main
-cp     ../hxdf/

################################
--each

-neko   ./neko/run.n
-cmd    bash test.neko.sh

#-------------------------------
#--next

#-cpp    ./cpp/
#-cmd    bash test.cpp.sh

test.neko.sh

#!/bin/bash

clear

printf "compiled to neko - running\n\n"

neko ./neko/run.n

printf "\n"
read -n1 -s -r -p "press any key to continue"

clear

Встроенный read ведет себя иначе, потому что он вызывается компилятором Haxe.Может ли быть способ, которым я могу переместить его в другой процесс, продолжая оказывать влияние на терминал, с которого я запустил компилятор Haxe?

EDIT: Ошибка /bin/sh возникает только тогда, когдаУ меня test.hxml установлено на это:


-main   Main
-cp     ../hxdf/

################################
--each

-neko   ./neko/run.n
-cmd    clear
-cmd    printf "compiled to neko - running\n\n"
-cmd    neko ./neko/run.n
-cmd    printf "\n"
-cmd    read -n1 -s -r -p "press any key to continue"
-cmd    clear

#-------------------------------
#--next

#-cpp    ./cpp/
#-cmd    bash test.cpp.sh

1 Ответ

0 голосов
/ 31 января 2019

Флаг -cmd не всегда работает идеально.По-видимому, некоторые функции оболочки не работают с ним (например, конвейер в файл ">" или эта проблема )

Я предлагаю вам написать скрипт Haxe для запуска теста, напримернепроверенный код:

Sys.command('haxe test-neko.hxml');
Sys.getChar();
Sys.command('haxe test-cpp.hxml');
Sys.getChar();
// etc
...