Tôi là một cựu chiến binh korn-shell, vì vậy tôi biết rằng tôi đã nói từ quan điểm đó.
Tuy nhiên, tôi thấy thoải mái với Bourne shell, ksh88 và ksh93 và tôi biết tính năng nào được hỗ trợ trong đó.
Để sử dụng tương tác, hãy thực hiện mọi thứ phù hợp với nhu cầu của bạn. Thí nghiệm. Tôi thích có thể sử dụng cùng một trình bao để sử dụng tương tác và lập trình.
Tôi đã chuyển từ ksh88 trên SVR2 sang tcsh, thành ksh88sun và ksh93. Tôi đã thử bash, và ghét nó vì nó làm phẳng lịch sử của tôi. Sau đó, tôi đã phát hiện
shopt -s lithist
và tất cả đều tốt. (Tùy chọn lithist đảm bảo rằng các dòng mới được giữ nguyên trong lịch sử lệnh của bạn.)
Để lập trình trình bao, tôi khuyên bạn nên ksh93 nếu bạn muốn một ngôn ngữ lập trình nhất quán, tuân thủ POSIX tốt và hiệu suất tốt, như nhiều unix phổ biến lệnh có thể khả dụng dưới dạng hàm dựng sẵn.
Nếu bạn muốn tính di động sử dụng ít nhất cả hai. Và chắc chắn rằng bạn có một bộ kiểm tra tốt.
Có nhiều sự khác biệt tinh tế giữa các loại vỏ. Xem xét ví dụ: đọc từ một đường ống:
b=42 && echo one two three four |
read a b junk && echo $b
Điều này sẽ tạo ra các kết quả khác nhau trong các vỏ khác nhau. Korn-shell chạy các đường ống từ sau ra trước; phần tử cuối cùng trong đường ống chạy trong tiến trình hiện tại.
Ví dụ khác minh họa tính nhất quán: Lệnh echo
, đã bị lỗi thời bởi sự phân chia giữa BSD và SYSV unix và mỗi giới thiệu quy ước riêng của họ không in dòng mới (và hành vi khác). Kết quả của điều này vẫn có thể được nhìn thấy trong nhiều kịch bản 'cấu hình'.
ksh mất một cách tiếp cận triệt để đó - và giới thiệu các lệnh print
, mà thực sự hỗ trợ cả hai phương pháp (các -n
tùy chọn từ BSD, và trailing \c
ký tự đặc biệt từ SYSV)
Tuy nhiên, đối nghiêm trọng hệ thống lập trình tôi 'd đề nghị một cái gì đó khác hơn là một vỏ, như python, perl. Hoặc tiến thêm một bước nữa, và sử dụng một nền tảng như con rối - cho phép bạn xem và chỉnh sửa trạng thái của toàn bộ các hệ thống, với việc kiểm tra tốt.
Lập trình vỏ giống như bơi trong vùng nước chưa được thám hiểm hoặc tệ hơn.
Lập trình bằng bất kỳ ngôn ngữ nào yêu cầu sự quen thuộc với cú pháp, giao diện và hành vi của nó. Shell lập trình không phải là bất kỳ khác nhau.
Nếu bạn đang làm chỉ ksh mẫu số chung tối thiểu, tôi đồng ý. Chính hãng David Korn ksh93, mặt khác, có những lợi thế hấp dẫn cho kịch bản: Tốc độ đặt nó gần 'awk' để xử lý văn bản; bản toán dấu chấm động bản địa; namevars và mảng kết hợp ngay cả trên các hệ thống không chạy bản phát hành mới nhất; v.v. –