Có cách nào để tự động chọn trình thông dịch đang thực thi một tập lệnh không? Tôi có một tập lệnh mà tôi đang chạy trên hai hệ thống khác nhau và trình thông dịch tôi muốn sử dụng được đặt ở các vị trí khác nhau trên hai hệ thống. Điều cuối cùng tôi phải làm là thay đổi dòng hashbang mỗi khi tôi chuyển qua. Tôi muốn làm một cái gì đó tương đương logic với điều này (tôi nhận ra rằng cấu trúc chính xác này là không thể):
if running on system A:
#!/path/to/python/on/systemA
elif running on system B:
#!/path/on/systemB
#Rest of script goes here
Hoặc thậm chí tốt hơn sẽ là cái này, để nó cố gắng sử dụng trình thông dịch đầu tiên, và nếu nó không tìm thấy thì nó sử dụng cái thứ hai:
try:
#!/path/to/python/on/systemA
except:
#!path/on/systemB
#Rest of script goes here
Rõ ràng, tôi thay vì có thể thực hiện nó như
/path/to/python/on/systemA myscript.py
hoặc
/path/on/systemB myscript.py
tùy thuộc vào nơi tôi, nhưng tôi thực sự có một kịch bản wrapper mà ra mắt myscript.py
, vì vậy tôi muốn chỉ định đường dẫn đến thông dịch viên python lập trình chứ không phải bằng tay.
if
điều kiện này không phải là một lựa chọn cho bạn? thích,if something; then /bin/sh restofscript.sh elif...