Ostatnio próbowałem napisać skrypt, którego można użyć do automatyzacji mojego programu c ++ w bash. Jeśli znasz AutoIt, mogę po prostu pokazać przykład tego, co próbuję zrobić:
send("1{enter}")
lub
send("!a")
OK Dla tych, którzy nie mówią AutoIt:
Pierwszy przykład wysyła symulowane naciśnięcie klawisza „1”, a następnie Enter (CR)
Drugi przykład wysyła alt-a
W szczególności staram się to zrobić w bash . Żaden inny język skryptowy nie zadziała
Również bym nie preferują spoonfeed. Proszę określić, jak to napisać . Pisanie skryptu nie jest dla mnie dozwolone.
linux
bash
automation
Ishan
źródło
źródło
Odpowiedzi:
Aby wprowadzić tekst do standardowego programu, użyj potoków i / lub przekierowania :
W przypadku interaktywnych programów CLI ( nie pełno-terminalowych), można używać nazwanych potoków lub koprocesów jako swego rodzaju biedaka
expect
(co wykluczyłeś z powodu bycia Tcl):(Uważaj podczas czytania z potoku wyjściowego; np.
head -1 <out
Nie tylko czyta jeden wiersz - buforuje jeden pełny blok 4k, drukuje jeden wiersz, odrzuca resztę.)źródło
grep
icurl
są tego dobrym przykładem. Pełny program terminalowy to coś, co przejmuje kontrolę nad całym oknem, jakvim
iscreen
.Szukasz xdotool .
Odpowiednikami twoich przykładowych poleceń xdotool są:
źródło