Contents

5 ví dụ về tập lệnh Bash giúp bạn học lập trình Linux

Đường dẫn nhanh

⭐Cách in Hello World trong Bash

⭐Tạo thư mục bằng cách đọc đầu vào

⭐Tạo thư mục bằng đối số dòng lệnh

⭐Xóa tệp bằng hàm Bash

⭐Tạo Máy tính cơ bản để tính toán số học

Tập lệnh Bash đại diện cho một phương tiện rất phổ biến và dễ tiếp cận mà người dùng có thể lập trình cho các thiết bị máy tính dựa trên Linux của họ. Việc cung cấp các mẫu tập lệnh thô sơ sẽ tạo điều kiện thuận lợi cho việc hiểu các quy trình cơ bản và cung cấp phần giới thiệu về các nguyên tắc cơ bản của lập trình Bash.

Cách in Hello World trong Bash

Thật vậy, phần trình diễn “Hello World” được đánh giá cao đóng vai trò là phần giới thiệu tuyệt vời về sự phức tạp của bất kỳ ngôn ngữ mã hóa nào, bao gồm cả ngôn ngữ kịch bản Bash được tôn kính.

Để tạo đầu ra tinh tế trong Bash, người ta có thể sử dụng cú pháp dòng lệnh ngắn gọn và biểu cảm để tận dụng các lệnh và tham số tích hợp sẵn. Quá trình in “Hello World” bao gồm việc gọi tiện ích echo với các đối số thích hợp để hiển thị văn bản trên màn hình terminal.

Vui lòng mở trình soạn thảo văn bản phù hợp, chẳng hạn như Microsoft Word hoặc Google Docs và bắt đầu làm việc trên một tài liệu mới bao gồm các dòng mã nguồn tiếp theo bên dưới:

⭐ Dòng đầu tiên trong tập lệnh Bash của bạn phải luôn trông như thế này:

 #!/bin/bash 

Lệnh shebang, được biểu thị bằng ký hiệu “#!” theo sau là đường dẫn đến tệp nhị phân thực thi và được trình tải của hệ điều hành diễn giải, đóng vai trò là thành phần quan trọng trong việc xác định trình thông dịch thích hợp để thực thi một tập lệnh nhất định. Cụ thể, khi gặp lệnh shebang “#!/bin/bash” trong tệp tập lệnh, hệ điều hành sẽ gọi trình thông dịch Bash để thực thi tập lệnh tương ứng.

⭐ Dòng nào bắt đầu bằng ký hiệu # đều là dòng nhận xét. Dòng Shebang là trường hợp đặc biệt, nhưng bạn có thể sử dụng nhận xét của riêng mình để giải thích mã của mình. Thêm nhận xét trên dòng 2, ví dụ:

 # Print some text from a bash script 

⭐ Bạn có thể in ra đầu ra tiêu chuẩn bằng lệnh echo, theo sau là giá trị bạn muốn in. Thêm dòng sau vào dòng 3:

 echo "Hello World" 

Khi tạo tập lệnh trong Bash, bạn nên tuân thủ quy ước đặt tên bằng cách thêm phần mở rộng tệp “.sh” vào tên tệp của tập lệnh. Mặc dù điều này không bắt buộc phải thực hiện nhưng việc sử dụng quy ước như vậy có thể giúp làm cho các tập lệnh dễ nhận dạng và sắp xếp hơn.

⭐ Để chạy tập lệnh của bạn, hãy làm cho tệp có thể thực thi được. Sử dụng lệnh chmod (“chế độ thay đổi”) cùng với đối số \+x (“có thể thực thi”) và tên tập lệnh shell của bạn:

 chmod \+x hello_world.sh 

⭐ Sử dụng lệnh này để chạy tập lệnh từ trong thư mục của nó:

 ./hello_world.sh 

⭐ Khi script chạy, nó sẽ in dòng chữ “Hello World” ra terminal của bạn: /vi/images/screenshot-2024-01-09-at-13-31-56.png

Tạo một thư mục bằng cách đọc đầu vào

Việc kết hợp chức năng thực thi các lệnh thường được nhập trong thiết bị đầu cuối, chẳng hạn như tạo một thư mục mới thông qua việc sử dụng lệnh mkdir trong tập lệnh của một người, có thể đạt được thông qua việc triển khai các tập lệnh tùy chỉnh.

⭐ Bắt đầu với dòng shebang tương tự như trước:

 #!/bin/bash 

⭐ Nhắc người dùng tên thư mục bằng lệnh echo như trước:

 echo "Enter new directory name:" 

⭐ Sử dụng lệnh đọc tích hợp để tìm nạp thông tin đầu vào của người dùng. Đối số duy nhất đặt tên cho một biến mà shell sẽ lưu trữ đầu vào:

 read newdir 

⭐ Khi bạn cần sử dụng giá trị được lưu trữ trong một biến, hãy thêm ký hiệu đô la vào tiền tố tên của biến đó ( $ ). Bạn có thể chuyển nội dung của biến đầu vào làm đối số cho lệnh mkdir để tạo một thư mục mới:

 mkdir $newdir 

⭐ Khi bạn chạy tập lệnh này, nó sẽ nhắc bạn nhập liệu. Nhập tên thư mục hợp lệ và bạn sẽ thấy tập lệnh tạo nó trong thư mục hiện tại của bạn: /vi/images/screenshot-2024-01-09-at-13-39-11.png

Tạo một thư mục sử dụng đối số dòng lệnh

Thay vì nhập dữ liệu đầu vào theo cách thủ công, nhiều chương trình dòng lệnh Linux cho phép cung cấp các đối số khi thực thi để tác động đến hoạt động của chúng.

Trong phạm vi tập lệnh của bạn, có thể sử dụng việc sử dụng các biến $1 đến $9 để biểu thị giá trị của các đối số từ một đến chín tương ứng. Ứng dụng hoặc mục đích cụ thể mà các biến này được sử dụng có thể khác nhau tùy theo yêu cầu của nhiệm vụ nhất định.

⭐ Tạo thư mục bằng lệnh mkdir từ ví dụ trước. Tuy nhiên, lần này, hãy sử dụng biến tích hợp $1:

 #!/bin/bash
mkdir $1 

⭐ Chạy tập lệnh, lần này chuyển tên thư mục mới mà bạn đã chọn làm đối số:

 ./arg_dir.sh Test 

Khi thực thi tập lệnh mà không cung cấp bất kỳ thông tin đầu vào nào, người ta có thể gặp phải lỗi sử dụng bắt đầu bằng “mkdir”.

/vi/images/screenshot-2024-01-09-at-13-42-32.png

Trong trường hợp không có đối số dòng lệnh, tham số vị trí đầu tiên ($1) sẽ mang lại giá trị trống. Khi thực thi lệnh “mkdir” trong tập lệnh của một người, không có đối số nào được truyền cho nó, dẫn đến lệnh “mkdir” trả về lỗi. Để khắc phục sự cố này, người ta có thể tự xác minh các điều kiện đó và thay vào đó cung cấp thông báo lỗi thân thiện hơn với người dùng.

⭐ Như mọi khi, hãy bắt đầu với dòng shebang:

 #!/bin/bash 

⭐ Trước khi bạn gọi mkdir, hãy kiểm tra đối số đầu tiên có trống không (tức là không có đối số). Bạn có thể thực hiện việc này bằng câu lệnh if của Bash chạy mã dựa trên một điều kiện:

 if ["$1" = ""]; then 

⭐ Nếu đối số đầu tiên trống, hãy in lỗi và thoát tập lệnh của bạn:

     echo "Please provide a new directory name as the first argument"
    exit 

⭐ Từ khóa “fi” hơi lạ (“if” đảo ngược) báo hiệu sự kết thúc của câu lệnh if trong Bash:

 fi 

⭐ Tập lệnh của bạn bây giờ có thể tiếp tục như trước để xử lý trường hợp khi có đối số:

 mkdir $1 

Khi thực hiện quá trình lặp lại cập nhật của chương trình phần mềm hiện tại, điều bắt buộc là phải cung cấp tất cả các tham số đầu vào bắt buộc; không làm như vậy sẽ dẫn đến việc tạo ra một thông báo cảnh báo cho người dùng về sự giám sát đó.

/vi/images/screenshot-2024-01-09-at-13-49-38.png

Xóa tệp bằng hàm Bash

Nếu bạn gặp phải mã lặp đi lặp lại, việc gói gọn mã đó trong một hàm có thể có ích. Điều này cho phép triển khai logic của hàm tại bất kỳ điểm mong muốn nào bằng cách chỉ cần gọi nó khi cần.

Chắc chắn đây là minh họa về chức năng loại bỏ một tệp được chỉ định.

⭐ Bắt đầu với dòng shebang:

 #!/bin/bash 

⭐ Xác định hàm bằng cách viết tên hàm, theo sau là dấu ngoặc đơn trống và các lệnh bên trong dấu ngoặc nhọn:

 del_file() {
    echo "deleting $1"
    rm $1
} 

Sau đó, bạn có thể gọi hàm và truyền cho nó tên của tệp cần xóa:

 del_file test.txt 

/vi/images/bash-del-file.png

Khi gọi một hàm được thực thi, nó gán một biến đặc biệt duy nhất “$?” với mã thoát của lệnh cuối cùng đã được chạy. Mã thoát này đóng vai trò như một phương tiện hiệu quả để đánh giá lỗi và có thể được sử dụng để xác định xem lệnh “rm” có thực thi thành công hay không, như được minh họa trong trường hợp này.

 if [ $? -ne 0 ]; then
    echo "Sorry, could not delete the file"
fi 

/vi/images/bash-del-file-fail.png

Tạo một máy tính cơ bản để tính toán số học

Ví dụ sau đây minh họa một thiết bị tính toán thô sơ. Sau khi thực hiện, người dùng sẽ nhập hai số liệu và chọn một hàm số học để thực hiện chúng.

Đây là mã cho calc.sh:

 #!/bin/bash

# Take operands as input
echo "Enter first number: "
read a

echo "Enter second number: "
read b

 # Input type of operation
echo "Enter Arithmetic Operation Choice :"
echo "Addition"
echo "Subtraction"
echo "Multiplication"
echo "Division"
read choice

 # calculator operations
case $choice in
  1)
 result=`echo $a \+ $b | bc`
  ;;

  2)
 result=`echo $a - $b | bc`
 ;;

  3)
 result=`echo $a \* $b | bc`
  ;;

  4)
 result=`echo "scale=2; $a / $b" | bc`
  ;;
esac

echo "Result: $result" 

Hãy xem xét việc sử dụng biểu thức case trong Bash, biểu thức này đóng vai trò như một cấu trúc tương tự với câu lệnh switch có trong các ngôn ngữ lập trình khác nhau. Điều này cho phép đánh giá giá trị của tham số theo nhiều giá trị được xác định trước, sau đó thực thi chức năng tương ứng dựa trên kết quả của đánh giá đó.

Tập lệnh này sử dụng việc sử dụng thebccommand để thực hiện mọi phép tính số học.

/vi/images/bash-calc.png