Jika saya ingin menjalankan AppleScript dari dalam skrip bash saya bisa memanggil file dengan daftar perintah yang saya perlukan untuk mengeksekusi.
#!/bin/bash
{some commands}
osascript file.scpt
{other commands}
Namun, bagaimana jika saya ingin menjalankan perintah yang perlu dijalankan secara berurutan dari dalam bash?
Contohnya adalah
#!/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"
Saya tahu ini adalah contoh yang sangat jauh, tetapi berfungsi untuk menjelaskan apa yang saya coba lakukan. Biasanya, perintah-perintah itu semua akan ditulis tanpa \
karakter melarikan diri masing-masing di semua tempat dan kurang di "
sekitar setiap perintah. Saya juga memiliki mereka di dalam .scpt
file.
Solusi yang saya tahu, adalah menulis ulang skrip menggunakan #!/usr/bin/osascript
alih-alih bash dan pergi dari sana, tapi saya ingin bisa berbaur. Saya telah menemukan bahwa saya dapat menguji file skrip, jika memang ada untuk membuat satu dan menambahkan setiap perintah saya perlu file itu dan kemudian menjalankan file skrip yang diperlukan dari dalam bash, tetapi itu juga mengalahkan tujuannya.
Tidak ada cara bahwa pertengahan jalan melalui file, saya bisa menukar shell yang digunakan dengan shebang
garis dan kemudian bertukar kembali setelah saya menjalankan perintah yang diperlukan, bukan?
Wawasan apa pun akan lebih dari sekadar sambutan.
sumber
end tell
naskah pertama.-e
contoh 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
sana adalah sebuah-e
hadir. Namun terlepas dari itu, apakah HEREDOC diperlakukan seolah-olah hanya satu baris?Anda dapat membungkus AppleScript mentah di
<<EOD
... Yang terakhirEOD
menandakan akhir input harus datang pada posisi pertama di baris.(BTW, applescript Anda sepertinya hilang
end tell
setelahactivate
....)sumber