Tôi vừa yêu vừa ghét viết Bash. Tôi thích rằng đó là vì vậy được sắp xếp hợp lý để hoạt động trên các tệp và làm việc với các quy trình (Tôi đồng ý với this popular question rằng cách này tốt hơn về vấn đề này so với Python, Ruby, v.v.), nhưng ghét cú pháp, đặc biệt là xung quanh điều kiện, vòng lặp vvCó bất kỳ ngôn ngữ nào biên dịch thành Bash không?
(Đây là chủ quan, nhưng tôi thấy nó cả hai khó hiểu và gây phiền nhiễu Ví dụ $var
khi đọc, nhưng var
khi viết;. viết âm thầm thất bại nếu có khoảng trống xung quanh =
; khung đôi trong IFS khi sử dụng regexp; đôi dấu chấm phẩy đôi khi và dấu chấm phẩy đơn khác, v.v.)
Là người hâm mộ lớn của CoffeeScript, c ompiles để JS, tôi đã tự hỏi: có bất kỳ ngôn ngữ có tính thẩm mỹ/cú pháp của các ngôn ngữ như Python/Ruby/CoffeeScript nhưng biên dịch và chạy như Bash thay vì một trong những runtimes khác?
Ví dụ: Tôi rất muốn có thể viết chủ yếu-Bash với cú pháp đơn giản hơn chỉ là một chút:
$AGGREGATE_FILENAME = 'allfiles.txt'
if not exists $AGGREGATE_FILENAME
touch $AGGREGATE_FILENAME
for $file in files/*
cat $file >> $AGGREGATE_FILENAME
switch $1
case 'test'
run-tests
echo 'Tests finished!'
case 'deploy'
echo 'Packaging...'
mv foo bar/
deploy-bar
Đây là một ví dụ siêu giả tạo, và cú pháp là một strawman (chủ yếu lấy cảm hứng từ CoffeeScript nhưng vẫn giữ khái niệm Bash thiết yếu của các lệnh hạng nhất, được phân tách khỏi các biến và đánh máy rời).
Dù sao, chỉ là một câu hỏi và thực phẩm cho suy nghĩ. Tôi muốn yêu thích để có thể viết kịch bản của tôi trong một thứ gì đó đẹp hơn Bash. =) Cảm ơn!
Bạn đã cân nhắc xem xét Perl chưa? Nó có các tập tin globs, kiểm tra sự tồn tại ngắn gọn ('' 'print 'exist' nếu (-e $ filename);' '') và thực hiện backtick. – tjdett
Tôi chưa bao giờ thử Perl. Tôi nghĩ rằng tôi đã viết câu hỏi này, nhưng tôi luôn cho rằng Perl cũng đầy cú pháp không thể hiểu nổi. = D Tôi sẽ kiểm tra nó - cảm ơn! –
Nó có thể được. May mắn thay, bạn không cần phải thực sự * sử dụng * phần lớn trong số đó. –