Điểm:1

cách hạn chế bash chỉ xử lý một phần của tập lệnh

lá cờ ws

Khi tôi đang kiểm tra tập lệnh bash, tôi đã đặt lệnh thoát để hạn chế tất cả chỉ ở phần đầu tiên của mã.

Nhưng bash luôn xử lý toàn bộ tập lệnh, cung cấp thông báo errogr cho mã bên dưới lệnh thoát.

Tôi chỉ có giải pháp để đưa ra nhận xét ngoài tất cả bên dưới trong lần thoát gỡ lỗi của mình.

Điều đó thật bất tiện, và món đồ đó đã tồn tại từ 30 năm nay.

Trong khi chờ đợi, bash có gì đó giống như __END__ trong perl không?

Trong một số vỏ, resp. trong Emacs, nhiều năm trước, có khả năng đánh dấu một phần mã và chạy một lớp con trên mã được đánh dấu này.

Cách như vậy tôi không thể tìm thấy trong kubuntu 20.04, trong vim.

Nhưng nó sẽ không phải là giải pháp mong muốn, vì nó cần rất nhiều công việc.

Trân trọng antondhidh

lá cờ hr
Bạn có thể thêm một ví dụ ngắn có thể lặp lại về việc `exit` không hoạt động không?
terdon avatar
lá cờ cn
Bạn có thể giải thích tại sao thật bất tiện khi chỉ bình luận phần còn lại không? Bất kỳ trình soạn thảo phù hợp nào, và tất nhiên là tất cả các IDE, sẽ cung cấp một phím tắt đơn giản để nhận xét/mã bỏ ghi chú, vì vậy vấn đề là chọn nó và nhấn phím tắt. Ví dụ: trên emacs của tôi, tôi có thể chuyển đổi nhận xét bằng cách sử dụng phím tắt `C-c c` được liên kết với `comment-or-uncomment-region`.
Artur Meinild avatar
lá cờ vn
Xây dựng tập lệnh của bạn bằng hàm. Bằng cách này, bạn có thể có nhiều mã, nhưng chỉ gọi các chức năng cụ thể mà bạn cần. Để khắc phục dễ dàng, bạn có thể tạo tất cả phần của tập lệnh mà bạn không muốn chạy một chức năng, vì vậy bạn cần thêm: `unused() {` trước và `}` sau.
lá cờ ar
Vui lòng [chỉnh sửa câu hỏi của bạn](https://askubuntu.com/posts/1394155/edit) và thêm cách bạn gọi tập lệnh. Ví dụ: bằng cách nhấp đúp hoặc bằng `./scriptname` hoặc bằng `bash scriptname` hoặc bằng một số phương tiện khác. Cũng bao gồm một kịch bản ngắn. Tôi không thể tạo lại sự cố này bằng tập lệnh 4 dòng: `#!/bin/bash` âµ `echo first line` âµ `exit` âµ `echo second line` âµ.
terdon avatar
lá cờ cn
@ user68186 Tôi nghĩ OP đang nói về việc có các dòng không đúng định dạng sau `exit`, vì vậy tập lệnh của bạn sẽ không sao chép nó, nhưng tôi cũng không thể sao chép các dòng không đúng định dạng. Bash đọc từng dòng script, vì vậy nó không nên phàn nàn về những dòng xấu sau một lệnh gọi thoát.
lá cờ ar
@terdon Tôi đồng ý. Những gì xảy ra sau khi `exit` không đúng định dạng hay không, hoàn toàn không nên được thực thi. Tôi luôn sử dụng `exit` trong bash, thường là với điều kiện `if` mà không gặp bất kỳ vấn đề gì.
Terrance avatar
lá cờ id
Bạn luôn có thể chạy `bash -x ./scriptfile.bsh` để hiển thị cho bạn các dòng khi chúng chạy trong tập lệnh của bạn.
waltinator avatar
lá cờ it
Luôn dán tập lệnh của bạn vào `https://shellcheck.net`, trình kiểm tra cú pháp hoặc cài đặt `shellcheck` cục bộ. Hãy biến việc sử dụng `shellcheck` thành một phần trong quy trình phát triển của bạn.
Anton Wessel avatar
lá cờ ws
Cảm ơn vì nhiều câu trả lời.Tiện ích "shellcheck" bây giờ tôi đã biết, nhưng bash không nên có vấn đề được mô tả ngay cả khi không có internet và không có shellcheck., nhưng onl

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.