Gdybym chciał uruchomić AppleScript z poziomu skryptu bash, mógłbym wywołać plik z listą poleceń, które muszę wykonać.
#!/bin/bash
{some commands}
osascript file.scpt
{other commands}
Co jednak, jeśli chciałbym uruchamiać polecenia, które musiały być uruchamiane sekwencyjnie z poziomu bash?
Przykładem może być
#!/bin/bash
echo
echo This will open Google Chrome in Kiosk mode
osascript -e "tell application \"Google Chrome\""
osascript -e "activate"
osascript -e "tell application \"System Events\""
osascript -e "key down {command}"
osascript -e "key down {shift}"
osascript -e "keystroke \"f\""
osascript -e "key up {shift}"
osascript -e "key up {command}"
osascript -e "end tell"
echo "Google Chrome is now open in Kiosk Mode"
Wiem, że jest to bardzo naciągany przykład, ale działa, aby wyjaśnić, co próbuję zrobić. Zwykle wszystkie te polecenia byłyby pisane bez odpowiednich \
znaków ucieczki w każdym miejscu, a mniej "
wokół każdego polecenia. Chciałbym też mieć je w .scpt
pliku.
Znanym mi rozwiązaniem jest przepisanie skryptu za pomocą #!/usr/bin/osascript
zamiast bash i przejście stamtąd, ale chcę mieć możliwość łączenia. Przekonałem się, że mogę przetestować plik skryptu, jeśli istnieje, aby go utworzyć i dołączyć każdą komendę, której potrzebuję, do tego pliku, a następnie wykonać wymagany plik skryptu z poziomu bash, ale to także nie udaje się.
Nie ma możliwości, aby w połowie pliku można było zamienić powłokę używaną z shebang
linią, a następnie z powrotem po wykonaniu niezbędnych poleceń, prawda?
Każdy wgląd byłby więcej niż mile widziany.
źródło
end tell
skryptu.-e
przykładu HEREDOC?-e statement Enter one line of a script. If -e is given, osascript will not look for a filename in the argument list. Multiple -e options may be given to build up a multi-line script. Because most scripts use characters that are special to many shell programs (for example, AppleScript uses single and double quote marks, ``('', ``)'', and ``*''), the statement will have to be correctly quoted and escaped to get it past the shell intact.
-e statement Enter one line of a script
tam jest-e
obecny. Ale poza tym, czy HEREDOC jest traktowany tak, jakby był pojedynczą linią?Możesz owinąć nieprzetworzony AppleScript w
<<EOD
... OstatniEOD
sygnał końca wejścia musi znajdować się na pierwszej pozycji w linii.(BTW, wydawało się, że brakuje twojego skryptu jabłkowego
end tell
poactivate
...)źródło