5 bash script ví dụ giúp bạn học lập trình Linux

Viết tạo bash script là một trong những cách lập trình máy tính Linux phổ biến và dễ tiếp cận nhất. Những ví dụ về script đơn giản này sẽ giúp bạn hiểu quy trình và giới thiệu cho bạn những kiến thức cơ bản về lập trình Bash.

1. Cách in Hello World trong Bash

Ví dụ Hello World là một cách tuyệt vời để học về bất kỳ ngôn ngữ lập trình nào và Bash cũng không ngoại lệ.

Đây là cách in "Hello World" bằng Bash:

1. Mở trình soạn thảo và bắt đầu chỉnh sửa file mới chứa các dòng code sau.

2. Dòng đầu tiên của Bash script phải luôn trông như thế này:

#!/bin/bash

Lưu ý: Lệnh Shebang (#!/bin/bash) rất cần thiết vì shell sử dụng nó để quyết định cách chạy script. Trong trường hợp này, nó sử dụng trình thông dịch Bash.

3. Bất kỳ dòng nào bắt đầu bằng ký hiệu # đều là một comment. Dòng shebang là trường hợp đặc biệt, nhưng bạn có thể sử dụng comment riêng để giải thích code của mình. Thêm comment trên dòng 2, ví dụ:

# Print some text from a bash script

4. 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"

5. Lưu script, tốt nhất là có phần mở rộng .sh, ví dụ, hello_world.sh. Phần mở rộng không phải là một yêu cầu bắt buộc nhưng đó là một quy ước hữu ích để tuân theo.

6. Để chạy script của bạn, hãy làm cho file có thể thực thi được. Sử dụng lệnh chmod ("change mode") cùng với đối số +x ("executable") và tên shell script của bạn:

chmod +x hello_world.sh

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

./hello_world.sh

8. Khi script chạy, nó sẽ in dòng chữ " Hello World " trên terminal của bạn:

Terminal hiển thị kết quả của một Bash script đơn giản gửi văn bản đến đầu ra
Terminal hiển thị kết quả của một Bash script đơn giản gửi văn bản đến đầu ra

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

Từ script của mình, bạn có thể chạy bất kỳ chương trình nào mà bạn thường chạy trên dòng lệnh. Ví dụ, bạn có thể tạo một thư mục mới từ script của mình bằng lệnh mkdir.

1. Bắt đầu với dòng Shebang tương tự như trước:

#!/bin/bash

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

echo "Enter new directory name:"

3. Sử dụng lệnh read 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

4. 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 trước 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

5. Khi bạn chạy script này, nó sẽ nhắc bạn nhập đầu vào. Nhập tên thư mục hợp lệ và bạn sẽ thấy script tạo nó trong thư mục hiện tại của bạn:

Bash script đơn giản tạo một thư mục từ đầu vào của người dùng
Bash script đơn giản tạo một thư mục từ đầu vào của người dùng

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

Thay thế cho việc đọc dữ liệu đầu vào một cách tương tác, hầu hết các lệnh Linux đều hỗ trợ đối số. Bạn có thể cung cấp một đối số khi chạy một chương trình để kiểm soát hành vi của nó.

Trong script của mình, bạn có thể sử dụng $1 để tham chiếu đến một biến đặc biệt chứa giá trị của đối số đầu tiên. $2 sẽ đề cập đến đối số thứ hai, v.v...

1. Tạo một 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

2. Chạy script, 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

Bạn có thể thắc mắc điều gì sẽ xảy ra nếu bạn chạy script mà không cung cấp đối số nào cả. Hãy thử và xem; bạn sẽ nhận được thông báo lỗi bắt đầu "usage: mkdir":

Terminal hiển thị thông báo lỗi từ mkdir
Terminal hiển thị thông báo lỗi từ mkdir

Nếu không có bất kỳ đối số dòng lệnh nào, giá trị $1 sẽ trống. Khi script của bạn gọi mkdir, script sẽ không chuyển đối số cho script đó và lệnh mkdir sẽ trả về lỗi đó. Để tránh điều này, bạn có thể tự kiểm tra tình trạng và đưa ra một lỗi thân thiện hơn:

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

#!/bin/bash

2. Trước khi bạn gọi mkdir, hãy kiểm tra đối số đầu tiên trố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 code dựa trên một điều kiện:

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

3. Nếu đối số đầu tiên trống, hãy in lỗi và thoát script của bạn:

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

4. 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

5. Script 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 chạy phiên bản script mới này, bạn sẽ nhận được thông báo nếu quên đưa vào đối số:

Terminal hiển thị kết quả của Bash script đơn giản để tạo một thư mục
Terminal hiển thị kết quả của Bash script đơn giản để tạo một thư mục

4. Xóa file bằng hàm Bash

Nếu bạn thấy mình lặp lại cùng một code, hãy cân nhắc việc gói code đó vào một hàm. Sau đó, bạn có thể gọi hàm đó bất cứ khi nào bạn cần.

Đây là một ví dụ về chức năng xóa một file nhất định.

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

#!/bin/bash

2. Xác định hàm bằng cách viết tên của nó, 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 file cần xóa:

del_file test.txt
Terminal hiển thị Bash script đang xóa một file
Terminal hiển thị Bash script đang xóa một file

Khi bạn gọi một hàm, nó sẽ đặt giá trị $? đặc biệt với trạng thái exit của lệnh cuối cùng nó chạy. Trạng thái thoát rất hữu ích cho việc kiểm tra lỗi; trong ví dụ này, bạn có thể kiểm tra xem lệnh rm có thành công hay không:

if [ $? -ne 0 ]; then
    echo "Sorry, could not delete the file"
fi
Terminal hiển thị Bash script đang cố xóa một file nhưng lại tạo ra lỗi
Terminal hiển thị Bash script đang cố xóa một file nhưng lại tạo ra lỗi

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

Ví dụ cuối cùng này minh họa một máy tính rất cơ bản. Khi chạy nó, bạn sẽ nhập hai giá trị, sau đó chọn một phép toán số học để thực hiện chúng.

Đây là code 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 "1. Addition"
echo "2. Subtraction"
echo "3. Multiplication"
echo "4. 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"

Lưu ý việc sử dụng case ... esac tương đương với câu lệnh switch của Bash từ các ngôn ngữ khác. Nó cho phép bạn kiểm tra một giá trị - trong trường hợp này là biến choice - với một số giá trị cố định và chạy code liên quan.

Script này sử dụng lệnh bc để thực hiện từng phép tính.

Terminal hiển thị đầu ra từ máy tính shell cơ bản
Terminal hiển thị đầu ra từ máy tính shell cơ bản
Thứ Tư, 10/01/2024 11:17
51 👨 533
0 Bình luận
Sắp xếp theo
    ❖ Linux