Nếu tôi muốn chạy AppleScript từ trong tập lệnh bash, tôi có thể gọi một tệp có danh sách các lệnh mà tôi yêu cầu thực thi.
#!/bin/bash
{some commands}
osascript file.scpt
{other commands}
Tuy nhiên, điều gì nếu tôi muốn chạy các lệnh cần được chạy theo trình tự từ bên trong bash?
Một ví dụ sẽ là
#!/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"
Tôi biết đây là một ví dụ rất xa, nhưng nó hoạt động để giải thích những gì tôi đang cố gắng làm. Thông thường, tất cả các lệnh đó sẽ được viết mà không có các \
ký tự thoát tương ứng của chúng ở khắp mọi nơi và ít hơn "
xung quanh mỗi lệnh. Tôi cũng có chúng trong .scpt
tập tin.
Một giải pháp tôi biết, là viết lại kịch bản bằng cách sử dụng #!/usr/bin/osascript
thay vì bash và đi từ đó, nhưng tôi muốn có thể trộn. Tôi đã thấy rằng tôi có thể kiểm tra tệp tập lệnh, nếu nó tồn tại để tạo một tập tin và nối từng lệnh tôi cần vào tập tin đó và sau đó thực thi tập tin tập lệnh cần thiết từ bên trong bash, nhưng điều đó cũng đánh bại mục đích.
Không có cách nào giữa chừng một tập tin, tôi có thể trao đổi shell đang được sử dụng với shebang
dòng và sau đó trao đổi lại sau khi tôi đã thực hiện các lệnh cần thiết, có phải không?
Bất kỳ cái nhìn sâu sắc sẽ được chào đón nhiều hơn.
end tell
của kịch bản.