Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Làm chủ Bash qua xây dựng trò chơi tương tác

Học ngôn ngữ lập trình mới có thể vui. Khi tôi thử học ngôn ngữ mới, tôi tập trung định nghĩa biến, viết câu lệnh, và đánh giá biểu thức. Khi có hiểu chung các khái niệm, thường tự giải quyết phần còn lại. Hầu hết ngôn ngữ lập trình có tương đồng, nên khi biết một ngôn ngữ, học ngôn ngữ tiếp theo là việc tìm hiểu chi tiết độc đáo và nhận ra khác biệt.

Để practice ngôn ngữ mới, tôi hay viết vài chương trình test. Một chương trình mẫu thường viết là "đoán số" đơn giản, máy tính chọn số 1-100 và yêu cầu tôi đoán. Chương trình lặp cho đến khi đoán đúng.

Chương trình "đoán số" tập luyện vài khái niệm ngôn ngữ: gán giá trị biến, viết câu lệnh, đánh giá điều kiện và vòng lặp. Thử nghiệm thực tế tuyệt vời học ngôn ngữ mới.

Đoán số trong Bash

Bash là shell chuẩn hầu hết hệ thống Linux. Bên cạnh giao diện dòng lệnh phong phú, Bash cũng hỗ trợ ngôn ngữ lập trình hoàn chỉnh dạng scripts.

Nếu chưa quen Bash, khuyến nghị các giới thiệu:

  • Bash là gì?
  • Bắt đầu lập trình Bash
  • Bắt đầu Bash scripting cho sysadmin
  • Cách viết hàm trong Bash
  • Đọc thêm về Bash

Bạn khám phá Bash bằng cách viết phiên bản trò chơi "đoán số". Đây là triển khai của tôi:

#!/bin/bash

number=$(( $RANDOM % 100 + 1 ))

echo "Guess a number between 1 and 100"

guess=0

while [ "0$guess" -ne $number ] ; do
read guess
[ "0$guess" -lt $number ] && echo "Too low"
[ "0$guess" -gt $number ] && echo "Too high"
done

echo "That's right!"
exit 0

Phân tích script

Dòng đầu #!/bin/bash bảo Linux chạy script dùng shell Bash. Mọi script bắt đầu bằng cặp ký tự #! chỉ ra đây là shell script. Ngay sau #! là shell chạy. Ở đây /bin/bash là shell Bash.

Gán giá trị biến, liệt kê tên biến theo sau =. Ví dụ, câu lệnh guess=0 gán giá trị 0 cho biến guess.

Bạn cũng nhắc user nhập giá trị dùng câu lệnh read. Nếu viết read guess, Bash chờ user nhập text rồi lưu giá trị vào biến guess.

Để tham chiếu giá trị biến, dùng $ trước tên biến. Vậy, sau khi lưu giá trị trong guess, truy xuất bằng $guess.

Bạn dùng tên tùy thích cho biến, nhưng Bash dành riêng vài tên biến đặc biệt. Một biến đặc biệt là RANDOM, sinh số ngẫu nhiên rất lớn mỗi lần tham chiếu.

Nếu muốn thực hiện phép toán cùng lúc lưu giá trị, phải bao câu lệnh trong ngoặc đặc biệt. Điều này bảo Bash thực thi câu lệnh trước, và = lưu kết quả vào biến. Đánh giá biểu thức toán học, dùng $(( )) quanh câu lệnh. Dấu ngoặc kép chỉ biểu thức số học. Trong ví dụ, number=$(( $RANDOM % 100 + 1 )) đánh giá biểu thức $RANDOM % 100 + 1 rồi lưu giá trị vào biến number.

Toán tử số học tiêu chuẩn + (cộng), - (trừ), * (nhân), / (chia), % (modulo) áp dụng.

Điều đó nghĩa number=$(( $RANDOM % 100 + 1 )) sinh số ngẫu nhiên 1-100. Toán tử modulo (%) trả về phần dư sau chia hai số. Ở đây, Bash chia số ngẫu nhiên cho 100, phần dư 0-99. Cộng 1 cho giá trị đó, được số ngẫu nhiên 1-100.

Bash hỗ trợ biểu thức điều kiện và điều khiển luồng như vòng lặp. Trong "đoán số", Bash tiếp tục lặp miễn giá trị guess khác number. Nếu đoán nhỏ hơn số ngẫu nhiên, Bash in "Too low", nếu lớn hơn, in "Too high".

Cách hoạt động

Bây giờ đã viết script Bash, chạy để chơi "đoán số". Tiếp tục đoán cho đến khi tìm đúng:

Guess a number between 1 and 100
50
Too high
30
Too high
20
Too high
10
Too low
15
Too high
13
Too low
14
That's right!

Mỗi lần chạy script, Bash chọn số ngẫu nhiên khác.

Trò chơi "đoán số" này là chương trình giới thiệu tuyệt vời khi học ngôn ngữ mới vì tập luyện vài khái niệm lập trình phổ biến cách trực quan. Bằng cách triển khai game đơn giản này trong các ngôn ngữ khác nhau, bạn demo khái niệm cốt lõi và so sánh chi tiết mỗi ngôn ngữ.

Bạn có ngôn ngữ lập trình yêu thích? Bạn viết "đoán số" trong nó như thế nào? Theo dõi series bài này xem ví dụ ngôn ngữ khác có thể thú vị.