Bir AppleScript'i bir bash betiğinin içinden çalıştırmak istersem, yürütmem gereken komutların listesini içeren bir dosyayı çağırabilirim.
#!/bin/bash
{some commands}
osascript file.scpt
{other commands}
Ancak, bash içinden sırayla çalıştırılması gereken komutları çalıştırmak istersem ne yapmalıyım?
Bir örnek olurdu
#!/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"
Bunun çok uzak bir örnek olduğunu biliyorum, ama ne yapmaya çalıştığımı açıklamaya çalışıyor. Normalde, bu komutların \
tümü, her yerdeki ilgili kaçış karakterleri olmadan ve "
her komutun etrafında daha az yazılır . Onları bir .scpt
dosyanın içinde de tutardım.
Farkında olduğum bir çözüm, betiği #!/usr/bin/osascript
bash yerine kullanarak yeniden yazmak ve oradan gitmek, fakat karıştırmak istiyorum. Bir komut dosyası için test edebileceğimi öğrendim, eğer bir tane oluşturmak ve bir komutu eklemek için mevcutsa bu dosyaya ihtiyacım var ve ardından gerekli komut dosyasını bash içinden yürütmek, ancak bu da amacı bozuyor.
Bir dosyanın ortasından geçmem mümkün değil, shebang
hat ile kullanılan kabuğu değiştirip sonra gerekli komutları yerine getirdikten sonra geri çekebilirim , değil mi?
Herhangi bir içgörü hoş karşılanmadan daha fazlası olurdu.
end tell
Senaryonun ilkini özledim .