Python hỗ trợ triple-trích dẫn chuỗi:
'''something'''
Shell chỉ hỗ trợ duy nhất được trích dẫn chuỗi:
'something'
Bằng cách sử dụng Bốn dấu ngoặc kép, sh
thấy rằng như 2 chuỗi rỗng, nhưng Python xem ba đầu tiên là bắt đầu của chuỗi được trích dẫn ba lần và bao gồm chuỗi thứ tư là một phần của giá trị chuỗi.
Phần còn lại của dòng sau đó được hiểu là lệnh bằng sh
, nhưng là một phần của chuỗi bằng Python.
#
sau đó tạo thành nhận xét theo như sh
là có liên quan, nhưng nó vẫn là một chuỗi để Python, đóng nó bằng dấu ba chấm đóng.
Vì vậy, để tóm tắt:
sh
thấy: chuỗi rỗng (''
)-chuỗi rỗng (''
)-lệnh (exec python -u -- "$0" ${1+"[email protected]"}
)-bình luận (# '''
)
- Python thấy: chuỗi được trích dẫn ba chữ (chứa các ký tự
'exec python -u -- "$0" ${1+"[email protected]"} #
)
Vì vậy sh
thực thi lệnh đó, thay thế bản thân với python -u --
với tên kịch bản và phần còn lại của các đối số dòng lệnh, và Python đọc tập tin này và chỉ thấy một chuỗi ban đầu đen mà không được đi đâu cả.
Vì đây là chuỗi đầu tiên trong tệp, nó sẽ được đặt làm chuỗi tài liệu cho mô-đun __main__
nhưng điều đó hầu như không quan trọng nếu đây là tập lệnh chính.
Nguồn
2013-07-03 21:41:03
Chỉ cần lưu ý rằng điều này sẽ khởi động * bất kỳ * python trong '$ PATH' vì vậy nó ** khủng khiếp không an toàn ** so với' #/usr/bin/env -i! python' * hoặc * (thậm chí tốt hơn) biết và sử dụng đường dẫn đầy đủ: '#!/usr/bin/python'. –