Lập trình trong bash - phần 3

đến đảm bảo của chúng tôi khái niệm Chúng ta sẽ tìm hiểu 2 công cụ rất hữu ích để lập trình hoạt động hoàn hảo trong Bash. Học cách tạo chức năng và định nghĩa đường ống Thoạt đầu có vẻ phức tạp, nhưng sau đó chúng ta sẽ thấy hữu ích mà họ cung cấp cho chúng tôi.

Đường ống

Cụ thể, và không mất quá nhiều lượt, một đường ống là một phương pháp cho phép chỉ đạo đầu ra của một quy trình này là đầu vào của quy trình khác, cho phép một loạt các lợi thế, chẳng hạn như giảm dòng mã, phân phối với các biến lưu trữ kết quả và cải hiệu quả của tập lệnh.

Một đường ống thường được nhận biết bằng cách có ký hiệu | cho phép nối các biểu thức; Mặc dù nó được sử dụng theo mặc định, nhưng vẫn có những cách khác để tạo đường ống.

Ví dụ: in các thông báo hạt nhân gần đây

#dmesg cho phép bạn xem các thông báo hạt nhân gần đây và các trình điều khiển đã tải # trong khi khởi động hệ thống; tail in các phần cuối cùng của tệp hoặc #command

dmesg | đuôi

Mặc dù chúng có thể phức tạp nhiều như chúng ta muốn, nhưng cấu trúc cơ bản của một đường ống cho phép kết quả của một lệnh được sử dụng làm đầu vào cho lệnh tiếp theo, có thể cung cấp đầu vào cho một lệnh mới nếu chúng ta tiếp tục thêm các đường ống liên tiếp.

chức năng

Hàm là một tập hợp các câu lệnh được nhóm lại với nhau để chúng có thể được thực thi nhiều lần mà không cần phải viết lại chúng. Tương đương với việc chúng ta nghĩ rằng khi học nấu một loại thức ăn, chúng ta sẽ viết công thức của nó lên một tờ giấy, và mỗi khi chúng ta muốn nấu món ăn đó, chúng ta tham khảo công thức đó thay vì viết lại một tờ mới với cùng một công thức.

Có lẽ điều quan trọng nhất về các hàm là khả năng truyền các tham số, dữ liệu mà chúng sẽ sử dụng để xử lý chúng và tạo ra một đầu ra. Cấu trúc của nó như sau:

function function-name {

quy trình

}

Ví dụ: hàm hiển thị các dịch vụ hoạt động trên giao thức tcp. Chúng ta cũng có thể xem cách áp dụng nhiều đường ống hơn.

# Chúng tôi xác định một tên hàm, nó có thể là tên chúng tôi thích.

function services_tcp {

#cat nối và hiển thị nội dung của thư mục / etc / services, là thư mục # chứa tất cả các dịch vụ với các cổng được liên kết của chúng.

#the first grep lấy danh sách và xóa nhận xét, với –v chúng tôi đảo ngược kết quả

# Grep thứ hai chỉ hiển thị những thứ liên quan đến tcp

cat / etc / services | grep –v "^ #" | grep tcp

}

Khi chúng ta cần thực thi hàm này, chúng ta chỉ cần gọi nó bằng tên của nó:

tcp_services

Trong trường hợp này, nó hoạt động mà không cần tham số; Trong trường hợp nó có chúng, chúng ta phải thêm chúng để chức năng hoạt động tốt, nếu không chức năng sẽ không hoạt động bình thường. Việc sử dụng return cho phép một hàm trả về một giá trị là kết quả của quá trình.

Ví dụ: hàm với các tham số đầu vào tính tổng của 2 số.

#! / bin / bash
hàm sum ()
{
# với let chúng ta có thể thực hiện thao tác bên trong dấu ngoặc kép
hãy để "kết quả = $ 1 + $ 2"

#return cho phép trả về giá trị nguyên. Khi việc trả về được thực hiện, giá trị sẽ được gửi vào bên trong biến $?
trả về kết quả $;
}
 
# Hàm sum được gọi và chúng tôi truyền 2 tham số đầu vào.

thêm 2 3

# in giá trị của $? với echo đánh giá giá trị thực của biến trong dấu ngoặc kép
echo -e "Kết quả = $?";

<< Đi đến phần trước

Cảm ơn Juan Carlos Ortiz!


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   Con trỏ Nill dijo

    Tôi không chắc, nhưng câu lệnh trả về của các hàm chỉ được sử dụng để trả về một số nguyên từ 0 đến 255, giống như mã lỗi của "exit", nói chung là 0 nếu mọi thứ đều ổn và một số khác cho các trường hợp khác. Mặc dù điều này hoạt động trong ví dụ, tôi không nghĩ rằng nó là một thực hành tốt để trả về kết quả có trả về.
    Ở đằng kia, tôi đang nói một điều vô nghĩa huh! con mắt! ha!

  2.   johnk dijo

    Sự thật khiến tôi không khỏi nghi ngờ. Trong mọi trường hợp, để tránh sự cố với các hàm, chúng ta có thể thay thế hàm trả về bằng tiếng vọng trong trường hợp hàm tìm cách trả về hoặc in một giá trị hoặc chuỗi.

  3.   Abel S. Mount Big dijo

    Đúng là, để giải quyết vấn đề này bạn có thể sử dụng lệnh bc, trong hàm sum bạn có thể sử dụng: result = `echo $ 1 + $ 2 | bc -ql`

  4.   Luis Miguel dijo

    tốt,

    Tôi muốn biết nơi tôi có thể lưu các tệp bash để chạy trên toàn hệ thống và đó không phải là thư mục bin, nhưng có thể là nơi để sao lưu.

    Trân trọng cảm ơn.

  5.   Joaquin dijo

    Cảm ơn bạn rất nhiều, tôi đang bắt đầu với các kịch bản, và sự thật là nó rất hữu ích, bạn rất tốt bụng chia sẻ kiến ​​thức của bạn!
    Liên quan

    1.    hãy sử dụng linux dijo

      Cảm ơn bạn! Ôm!
      Pablo

  6.   CRISTHIAN dijo

    Lỗi cú pháp: "(" không mong muốn
    Tôi gặp lỗi khi cố gắng chạy ví dụ, tôi đã sao chép nó giống hệt nhau

    Chuyện gì có thể? tôi đang sử dụng ubuntu 14.10