Ôn tập: đoán số
Thuộc phần Kiến thức cơ bản trong hành trình Terminal của Coddy. Bài học 73 trên 82.
Thử thách
DễTạo một shell script có tên guesser.sh để mô phỏng trò chơi đoán số với một chuỗi lượt đoán cố định.
Script của bạn cần:
- Bắt đầu bằng dòng shebang (
#!/bin/bash) - Đặt biến có tên
secretvới giá trị5 - Đặt biến có tên
guessvới giá trị ban đầu là0 - Dùng vòng lặp while, tiếp tục chạy chừng nào
guesschưa bằngsecret - Trong vòng lặp, tăng
guessthêm 1 - Dùng câu lệnh if để kiểm tra lượt đoán:
- Nếu
guessnhỏ hơnsecret, in ra:Guess [guess]: Too low! - Nếu
guessbằngsecret, in ra:Guess [guess]: Correct!
- Nếu
Đặt script ở chế độ có thể thực thi rồi chạy nó. Đầu ra cần là:
Guess 1: Too low!
Guess 2: Too low!
Guess 3: Too low!
Guess 4: Too low!
Guess 5: Correct!Viết script nhiều dòng với một
echotrên mỗi dòng cũng được, nhưng có một cách ngắn hơn: here document đưa mọi thứ cho đến từ đóng vào thẳng tệp.cat > script.sh << 'EOF' #!/bin/bash echo "hello" EOFDấu nháy quanh
'EOF'ngăn$variablesđược mở rộng trong lúc ghi tệp. Đây là điều bạn cần khi chính script sử dụng các biến đó.
Gợi ý: Dùng
-necho điều kiện "không bằng" trong vòng lặp while,-ltcho "nhỏ hơn" trong câu lệnh if và-eqcho "bằng". Tăng lượt đoán ở đầu mỗi lần lặp bằngguess=$((guess + 1)).
Tự làm thử
Tất cả bài học trong Kiến thức cơ bản
4Thư mục
Tạo thư mụcSao chép thư mụcDi chuyển và đổi tên thư mụcXóa thư mụcÔn tập: thao tác với thư mục7Nội dung tệp
Head và tailĐếm từLệnh sortLệnh uniqueCơ bản về grepGrep với các cờÔn tập: Thám tử văn bản13Cơ bản về viết tập lệnh shell
Tập lệnh shell là gìTạo và chạy tập lệnhBiến trong tập lệnhĐầu vào của người dùng trong tập lệnhCâu lệnh ifVòng lặp forVòng lặp whileÔn tập: đoán số2Điều hướng
In đường dẫn thư mục hiện tạiLiệt kê tệpChuyển thư mụcĐường dẫn tuyệt đối và tương đốiThư mục chính và thư mục gốcÔn tập: tìm đường8Chuyển hướng
Đầu ra chuẩnGhi đè vào tệpGhi thêm vào tệpĐầu vào chuẩnLỗi chuẩnÔn tập: Công cụ tạo nhật ký6Ký tự đại diện và mẫu
Ký tự đại diện dấu saoKý tự đại diện dấu hỏiKý tự đại diện trong ngoặc vuôngKết hợp ký tự đại diệnÔn tập: thao tác có chọn lọc9Đường ống
Đường ống là gìNối hai lệnh bằng đường ốngNối nhiều lệnh bằng đường ốngDùng đường ống với grepÔn tập: luồng xử lý dữ liệuTự luyện tập: Playground Terminal