Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Cách viết hàm trong Bash

Khi bạn đang lập trình, bạn thực sự đang xác định một thủ tục hoặc một quy trình , bạn muốn máy tính thực hiện. Một phép tương tự đơn giản so sánh lập trình máy tính với nướng bánh mì:bạn liệt kê các thành phần một lần để thiết lập môi trường làm việc, sau đó bạn liệt kê các bước bạn phải thực hiện để có một ổ bánh mì. Trong cả lập trình và nướng, một số bước phải được lặp lại ở các khoảng thời gian khác nhau. Ví dụ, trong việc nướng bánh mì, đây có thể là quá trình nuôi cấy bột chua:

STIR=100
SNOOZE=86400

function feed_culture {
  remove_from(pantry)
  add(flour, water)
  stir($STIR)
  sleep($SNOOZE)
}

Và sau đó, nhào và nhào bột:

KNEAD=600
SNOOZE=7200

function process_dough {
  remove_from(proofing_drawer)
  knead($KNEAD)
  return_to_drawer($SNOOZE)
}

Trong lập trình, các chương trình con này có thể được biểu diễn dưới dạng hàm . Các hàm rất quan trọng đối với các lập trình viên vì chúng giúp giảm bớt sự dư thừa trong mã, do đó làm giảm số lượng bảo trì cần thiết. Ví dụ:trong kịch bản tưởng tượng là nướng bánh mì theo chương trình, nếu bạn cần thay đổi khoảng thời gian kiểm chứng bột, miễn là bạn đã sử dụng một hàm trước đó, bạn chỉ cần thay đổi giá trị của giây một lần, bằng cách bằng cách sử dụng một biến (được gọi là SNOOZE trong mã mẫu) hoặc trực tiếp trong chương trình con xử lý bột nhào. Điều đó có thể giúp bạn tiết kiệm rất nhiều thời gian, bởi vì bạn không phải tìm kiếm cơ sở mã của mình cho mọi đề cập có thể xảy ra về bột tăng cao, ít lo lắng về việc bỏ lỡ một. Nhiều lỗi là do giá trị bị thiếu không được thay đổi hoặc do sed thực thi kém chỉ huy với hy vọng bắt được mọi trận đấu cuối cùng mà không cần phải tìm kiếm chúng theo cách thủ công.

Trong Bash, việc xác định một hàm dễ dàng như đặt nó trong tệp script bạn đang viết hoặc trong một tệp riêng biệt. Nếu bạn lưu các chức năng vào một tệp chuyên dụng, bạn có thể source nó vào tập lệnh của bạn như cách bạn làm include thư viện bằng C hoặc C ++ hoặc import một mô-đun sang Python. Để tạo một hàm Bash, hãy sử dụng từ khóa function :

function foo {
# code here
}

Đây là một ví dụ đơn giản (và có phần giả tạo, vì điều này có thể đơn giản hơn) về cách một hàm hoạt động với các đối số:

#!/usr/bin/env bash
ARG=$1

function mimic {
  if [[ -z $ARG ]]; then
    ARG='world'
  fi
  echo "hello $ARG"
}

mimic $ARG

Đây là kết quả:

$ ./mimic
hello world
$ ./mimic everybody
hello everybody

Lưu ý dòng cuối cùng của tập lệnh thực thi chức năng. Đây là một điểm nhầm lẫn phổ biến đối với những người mới bắt đầu viết kịch bản và lập trình viên:các hàm không được thực thi tự động. Chúng tồn tại dưới dạng tiềm năng cho đến khi chúng được gọi.

Nếu không có một dòng gọi hàm, hàm sẽ chỉ được xác định và sẽ không bao giờ chạy.

Nếu bạn mới sử dụng Bash, hãy thử thực thi tập lệnh mẫu một lần với dòng cuối cùng được bao gồm và lặp lại với dòng cuối cùng được nhận xét.

Sử dụng các hàm

Chức năng là khái niệm lập trình quan trọng, ngay cả đối với các tập lệnh đơn giản. Bạn càng cảm thấy thoải mái hơn với các hàm, bạn sẽ càng thấy tốt hơn khi đối mặt với một vấn đề phức tạp cần một thứ gì đó năng động hơn chỉ là các dòng lệnh khai báo. Giữ các chức năng có mục đích chung trong các tệp riêng biệt cũng có thể giúp bạn tiết kiệm một số công việc, vì nó sẽ giúp bạn xây dựng các quy trình bạn thường sử dụng để bạn có thể sử dụng lại chúng trong các dự án. Xem xét thói quen viết tập lệnh của bạn và xem các chức năng có thể phù hợp ở đâu.