Hướng dẫn cho người mới bắt đầu để BASH - Tham số đầu vào

Chào mừng bạn đến với phần thứ hai của loạt hướng dẫn người mới bắt đầu Để BASH là duy nhất ở chỗ đó là hướng dẫn BASH duy nhất được viết bởi người mới bắt đầu cho người mới bắt đầu.

Độc giả của hướng dẫn này sẽ xây dựng kiến ​​thức của họ khi tôi xây dựng kiến ​​thức của mình và hy vọng rằng cuối cùng, tất cả chúng ta sẽ có thể viết một số kịch bản khá thông minh.

Tuần trước, tôi đã đề cập đến việc tạo tập lệnh đầu tiên của bạn , chỉ đơn giản là hiển thị các từ "Hello World". Nó bao gồm các chủ đề như trình soạn thảo văn bản, cách mở cửa sổ dòng lệnh, nơi đặt kịch bản, cách hiển thị chữ "Hello World" và một số điểm tốt hơn trên ký tự thoát như dấu ngoặc kép ("").

Tuần này tôi sẽ bao gồm các thông số đầu vào. Có những hướng dẫn khác dạy điều này nhưng tôi thấy họ nhảy vào một số thứ khá thấp và có thể cung cấp quá nhiều thông tin.

Tham số là gì?

Trong kịch bản "Hello World" từ hướng dẫn cuối cùng, tất cả đều rất tĩnh. Kịch bản đã không thực sự làm nhiều ở tất cả.

Làm thế nào chúng ta có thể cải thiện trên kịch bản "Hello World"?

Điều gì về một kịch bản chào đón người chạy nó? Thay vì nói "Hello World", nó sẽ nói "Hello Gary", "Hello Tim" hoặc "Hello Dolly".

Nếu không có khả năng chấp nhận các tham số đầu vào, chúng ta sẽ cần viết ba kịch bản "hellogary.sh", "hellotim.sh" và "hellodolly.sh".

Bằng cách cho phép kịch bản của chúng tôi đọc các tham số đầu vào, chúng tôi có thể sử dụng một tập lệnh để chào mọi người.

Để làm điều này mở ra một cửa sổ terminal (CTRL + ALT + T) và điều hướng đến thư mục script của bạn bằng cách gõ như sau: ( about cd command )

cd script

Tạo một tập lệnh mới có tên là greetme.sh bằng cách gõ như sau: ( about touch command )

chạm vào greetme.sh

Mở tập lệnh trong trình chỉnh sửa yêu thích của bạn bằng cách nhập như sau: ( về lệnh nano )

nano greetme.sh

Nhập văn bản sau đây trong nano:

#! / bin / bash echo "hello $ @"

Nhấn CTRL và O để lưu tệp và sau đó nhấn CTRL và X để đóng tệp.

Để chạy tập lệnh, hãy nhập thông tin sau vào dòng lệnh thay thế bằng tên của bạn.

sh greetme.sh

Nếu tôi chạy kịch bản với tên của tôi, nó sẽ hiển thị dòng chữ "Hello Gary".

Dòng đầu tiên có dòng #! / Bin / bash được sử dụng để nhận dạng tệp dưới dạng tập lệnh bash.

Dòng thứ hai sử dụng câu lệnh echo để echo từ hello và sau đó có ký hiệu $ @ lạ. ( về lệnh echo )

$ @ Mở rộng để hiển thị mọi thông số được nhập cùng với tên tập lệnh. Vì vậy, nếu bạn gõ "sh greetme.sh tim" các từ "hello tim" sẽ được hiển thị. Nếu bạn gõ "greetme.sh tim smith" thì từ "hello tim smith" sẽ được hiển thị.

Nó có thể là tốt đẹp cho các kịch bản greetme.sh để chỉ nói xin chào bằng cách sử dụng chỉ là tên đầu tiên. Không ai nói "xin chào gary newell" khi họ gặp tôi, họ có thể nói "xin chào gary".

Hãy thay đổi kịch bản để nó chỉ sử dụng tham số đầu tiên. Mở tập lệnh greetme.sh bằng nano bằng cách gõ như sau:

nano greetme.sh

Thay đổi kịch bản để nó đọc như sau:

#! / bin / bash echo "hello $ 1"

Lưu tập lệnh bằng cách nhấn CTRL và O rồi thoát bằng cách nhấn CTRL và X.

Chạy tập lệnh như hình bên dưới (thay thế tên của tôi bằng tên của bạn):

sh greetme.sh gary newell

Khi bạn chạy kịch bản nó sẽ chỉ đơn giản là nói "hello gary" (hoặc hy vọng "hello" và tên của bạn là gì.

1 sau khi biểu tượng $ về cơ bản nói đến lệnh echo, sử dụng tham số đầu tiên. Nếu bạn thay thế $ 1 với $ 2 sau đó nó sẽ hiển thị "hello newell" (hoặc bất kỳ tên họ của bạn).

Ngẫu nhiên nếu bạn thay thế $ 2 với $ 3 và chạy kịch bản chỉ với 2 tham số, đầu ra sẽ đơn giản là "Hello".

Có thể hiển thị và xử lý số tham số thực sự được nhập và trong các hướng dẫn sau, tôi sẽ chỉ ra cách sử dụng số tham số cho mục đích xác nhận.

Để hiển thị số tham số được mở, hãy mở tập lệnh greetme.sh (nano greetme.sh) và sửa đổi văn bản như sau:

#! / bin / bash echo "bạn đã nhập $ # tên" echo "hello $ @"

Nhấn CTRL và O để lưu tập lệnh và CTRL và X để thoát khỏi nano.

$ # Trên dòng thứ 2 hiển thị số tham số được nhập vào.

Vì vậy, đến nay tất cả điều này đã được cuốn tiểu thuyết nhưng không phải là rất hữu ích. Ai cần một kịch bản chỉ đơn giản là hiển thị "hello"?

Việc sử dụng thực sự cho các câu lệnh echo là cung cấp đầu ra có ý nghĩa và có ý nghĩa cho người dùng. Nếu bạn có thể tưởng tượng rằng bạn muốn làm điều gì đó phức tạp liên quan đến một số thao tác crunching số và thao tác tập tin / thư mục thì sẽ hữu ích khi hiển thị cho người dùng những gì đang diễn ra trên mỗi bước.

Ngược lại, các tham số đầu vào làm cho kịch bản của bạn tương tác. Nếu không có các tham số đầu vào, bạn sẽ cần hàng chục tập lệnh làm tất cả những việc rất giống nhau nhưng với các tên hơi khác nhau.

Với tất cả điều này trong tâm trí có một số thông số đầu vào hữu ích khác mà nó là một ý tưởng tốt để biết và tôi sẽ bao gồm tất cả trong một đoạn mã.

Mở tập lệnh greetme.sh của bạn và sửa đổi nó như sau:

#! / bin / bash echo "Tên tệp: $ 0" echo "Process ID: $$" echo "---------------------------- --- "echo" bạn đã nhập $ # tên "echo" hello $ @ "

Nhấn CTRL và O để lưu tệp và CTRL và X để thoát.

Bây giờ chạy kịch bản (thay thế bằng tên của bạn).

sh greetme.sh

Lần này tập lệnh hiển thị như sau:

Tên tệp: greetme.sh Process ID: 18595 ------------------------------ bạn đã nhập 2 tên hello gary newell

$ 0 trên dòng đầu tiên của tập lệnh hiển thị tên của tập lệnh bạn đang chạy. Lưu ý rằng nó là đô la không và không phải đô la o.

$$ trên dòng thứ hai hiển thị id quá trình của tập lệnh bạn đang chạy. Tại sao điều này hữu ích? Nếu bạn đang chạy một kịch bản trong nền trước, bạn có thể hủy bỏ nó bằng cách nhấn CTRL và C. Nếu bạn chạy tập lệnh ở chế độ nền và nó bắt đầu lặp lại và thực hiện cùng một điều hoặc bắt đầu gây thiệt hại cho hệ thống của bạn, bạn sẽ cần để giết nó.

Để giết một kịch bản chạy trong nền bạn cần quá trình id của kịch bản. Nó sẽ không được tốt nếu kịch bản đã cho id quá trình như là một phần của sản lượng của nó. ( về ps và lệnh giết )

Cuối cùng trước khi tôi kết thúc với chủ đề này, tôi muốn thảo luận về nơi đầu ra đi. Mỗi khi kịch bản đã chạy, cho đến nay đầu ra đã được hiển thị trên màn hình.

Nó là khá phổ biến cho đầu ra kịch bản được ghi vào một tập tin đầu ra. Để làm điều này chạy kịch bản của bạn như sau:

sh greetme.sh gary> greetme.log

Biểu tượng> trong lệnh trên sẽ xuất ra văn bản "hello gary" thành một tệp có tên là greetme.log.

Mỗi lần bạn chạy tập lệnh với ký hiệu> nó sẽ ghi đè nội dung của tệp đầu ra. Nếu bạn muốn nối thêm vào tập tin, hãy thay thế> bằng >>.

Tóm lược

Bây giờ bạn có thể viết văn bản vào màn hình và chấp nhận các tham số đầu vào.