2012-12-11 44 views
21

Xin chào Tôi là người mới trong kịch bản SHELL. Thật sự tôi có một hàm err() trong tập tin abc các tập tin là không phải với .sh mở rộng họ là tập tin đơn giản nhưng bắt đầu với #!/bin/bashNhập chức năng shell script

err() { 
echo "${1}" >&2 
} 

Bây giờ tôi đang nhập khẩu nó trong một tập tin khác nhau xyz

source abc 
someFunction(){ 
err "Failed to back up" 
} 

Có đúng cách để nhập?

Trả lời

22

Vâng, bạn có thể làm như bạn đề cập ở trên hoặc như: . FILENAME

Các tập tin không cần phải kết thúc với .sh

4

Đó là tốt, sau đây là một số gợi ý hơn:

  1. Sử dụng quy ước đặt tên cho các hàm, ví dụ: tiền tố tên hàm với f_, ví dụ: f_err. Các cuộc gọi chức năng xuất hiện không khác với các lệnh khác, đây là gợi ý cho người đọc. Nó cũng làm giảm nguy cơ va chạm tên.

  2. Bạn chỉ cần truy cập đọc và bạn không cần #!/bin/bash (chỉ là nhận xét).

  3. Trong Bash, một số tùy chọn phải được đặt trước khi phân tích chức năng. Ví dụ, shopt -s extglob phải được thực hiện trước và bên ngoài chức năng nếu nó sử dụng hình cầu mở rộng. Đặt hàm bên trong hàm quá muộn.

  4. Bash không hỗ trợ biến môi trường FPATH hoặc tự động tải (như trình bao Korn).

2

Bạn cần phải xuất khẩu mới được tạo ra chức năng

vào cuối abc thêm này:

export -f err 
+0

Bạn chỉ cần xuất khẩu chức năng để làm cho nó có sẵn trong một subshell (một bắt đầu bằng cách chạy một thể hiện khác của bash). Sau khi tìm nguồn cung ứng tệp, mọi hàm được định nghĩa trong đó sẽ có sẵn trong trình bao hiện tại. – chepner

Các vấn đề liên quan