Hướng dẫn cơ bản bash script

Bash là một trong những công cụ scripting phổ biến trong Unix. Nó được viết theo cụm Bourne Again Shell. Nó là công cụ mạnh mẽ cho mọi lập trình viên Linux và System Administrator. Giờ, hãy cùng tiếp hiểu làm thế nào để dùng bash script thôi!

Unix có 2 loại shell chính:

  • Bourne-type shell
  • C shell

Bourne shell còn được chia thành:

  • Korn shell (ksh)
  • Bourne shell (sh)
  • POSIX shell (sh)
  • Bourne Again shell (bash)

C shell thì được chia thành:

  • C shell (csh)
  • TENEX (TOPS) C shell (tcsh)

Bash scripts cực kỳ mạnh mẽ và hữu dụng cho lập trình viên. Nó cắt ngắn thời gian thực hiện tác vụ lại bằng chỉ một lệnh gọi hàm duy nhất. Nhiều lệnh dài cũng có thể được tổng hợp thành code thực thi được.

Bash sẵn để dùng cho gần như tất cả các máy Linux và không cần cài đặt gì thêm riêng. Bạn có thể truy cập danh sách shell tại đây:

cat /etc/shells

Kết quả sẽ như sau:

/bin/bash

/bin/sh

/bin/tcsh

/bin/csh

Vì sao sử dụng Bash Functions?

Bash functions có thể:

  • Không phải thực hiện các tác vụ lặp đi lặp lại
  • Tiết kiệm thời gian
  • Tạo một loạt các hoạt động có cấu trúc cao, có khả năng lắp ráp tốt
  • Với function, bạn có thể nhập giá trị động vào lệnh sử dụng argument trong dòng lệnh
  • Đơn giản hóa các lệnh thành một đơn vị vận hành duy nhất
  • Tạo xong có thể chạy nhiều lần bởi bất kỳ ai. Tạo một lần thực thi nhiều lần.
  • Logical flows có thể được tạob ằng bash functions
  • Bash functions có thể thực thi khi server khởi động bằng cách thêm cron job để tự chạy
  • Commands có thể debugged
  • Có shell command tương tác

Bash đúng là một công cụ tuyệt vời để cải thiên cộng việc thường ngày của bạn để cải thiện dự án. Tiềm năng sử dụng của nó không giới hạn, vì vậy hôm nay chúng tôi sẽ chỉ bạn cơ bản trước. Sẵn sàng để viết script đầu tiên của bạn nào!

Bắt đầu với Bash Script

Để bắt đầu, chúng ta cần truy cập SSH vào server VPS trước. Nếu bạn gặp khó khăn trong việc này, hãy tham khảo hướng dẫn hữu ích của chúng tôi tại đây.

Lệnh đầu tiên bạn cần biết là lệnh mở hướng dẫn của bash:

man bash

Tiếp theo chúng ta sẽ cần tạo file .sh. Để làm vậy bạn cần dùng VIM Editor. Tạo file bằng lệnh như sau:

vim sampleFunction.sh

Giờ đã vào trong file .sh, chúng ta có thể chỉnh sửa nó

Nó sẽ cho bạn thấy một số ví dụ của Bash command và cách dụng. Mỗi bash script bắt đầu với các dòng sau:

#!/bin/bash

Lệnh bên dưới hiển thị đường dẫn của bash script.

which bash

Nó sẽ cho bạn kết quả như sau:

/bin/bash

Cấu trúc bash thông thường như sau:

function functionName {

first command

second command

}

Nó có thể được viết thành:

functionName (){

first command

second command

}

Trong một dòng, bạn có thể viết như sau:

functionName() { first command; second command; }

caca

Ví dụ cho hàm này là ở bên dưới, chúng tôi tạo thư mục trước rồi sau đó trỏ đường dẫn tới thư mục mới:

sampleFunction () {

mkdir -p $1

cd $1

}

$1 đại diện cho tham số của dòng lệnh. Bash có thể tạo input động trong dòng lệnh. Để kiểm tra hàm này, bạn hãyt hực thi:

sampleFunction myDir

Tại đây myDir là tên một thư mục hợp lệ sẽ được tạo. Nếu bạn kiểm tra thư mục hiện hành bằng lệnh pwd bạn sẽ thấy bạn đang ở trong thư mục vừa tạo có tên myDir.

Tương tự vậy, tất cả các lệnh đã được dùng có thể thêm vào thành bash function.

Hãy nhớ, khi bạn đã thực hiện xong với VIM editor để chỉnh file .sh, bạn lưu lại và thoát bằng cách nhấn nút ESC để đi tới chế độ dòng lệnh, rồi gõ :wq để lưu và thoát.

Bash Functions cơ bản

Một trong các ví dụ của bash function là:

#!/bin/bash

testfunction(){

   echo "My first function"

}

testfunction

Nếu bạn lưu script này trong testFunction.sh và thực thi nó bằng ./testFunction.sh, vậy kết quả bạn sẽ thấy là:

My first function

Echo sẽ in kết quả ra màn hình. Nếu bạn đổi vị trí của hàm này với một lệnh gọi hàm, vậy kết quả sẽ ra lỗi. Code snippet bên dưới sẽ xuất lỗi:

#!/bin/bash

testfunction

testfunction(){

   echo "My first function"

}

Vậy đầu tiên bạn sẽ cần định nghĩa hàm này và kích hoạt nó.

Bash functions chấp nhật mọi số là tham số. BÊn dưới là ví dụ nó lấy 2 tham số:

#!/bin/bash

testfunction(){

   echo $1

   echo $2

}
testfunction "Hello" "World"

Bạn có thể sử dụng input trực tiếp và thực hiện bash function. Kết  quả như sau:

#!/bin/bash

addition(){

   sum=$(($1+$2))

   return $sum

}

read -p "Enter a number: " int1

read -p "Enter a number: " int2

add $int1 $int2

echo "The result is : " $?

Trong ví dụ trên, giá trị cộng thêm được gắn vào một tổngm nó trả về từ hàm. Interactive input được dùng bởi lệnh read cho cả 2 số. Cuối cùng, kết được in ra bằng dấu $? Chứa giá trị trả về từ $sum của hàm này.

Bash functions luôn trả về chỉ một giá trị.

Bạn có thể thêm comment trong file bằng cách đặt dấu # để lưu lại các ghi chú hữu dụng.

Bash scripts hỗ trợ:

  • While loop
  • For loop
  • If statement
  • And logic
  • Or logic
  • Else If statement
  • Case Statement

Bên dưới là một ví dụ ngắn của While loop của bash script.

#!/bin/bash

isvalid=true

count=1

while [ $isvalid ]

do

echo $count

if [ $count -eq 5 ];

then

break

fi

((count++))

done

Ví dụ trên sử dụng while và if. Nó thực thi vòng lặp 5 lần trước khi thoát sau khi thực thi các điều kiện if.

Kết quả sẽ như sau:

1

2

3

4

5

For loop được dùng để tăng hoặc giảm bộ đếm. Một ví dụ của for loop là:

#!/bin/bash

for (( count=10; count>0; count-- ))

do

echo -n "$count "

done

Kết quả của for loop sẽ thành:

10 9 8 7 6 5 4 3 2 1

Trong Bash Script, && đại diện cho AND, còn || đại diện cho OR.

Với statement If, bạn cũng có thể định nghĩa Else if. Ví dụ như sau:

#!/bin/bash

echo "Enter a valid number"

read n

if [ $n -eq 101 ];

then

echo "This is first number"

elif [ $n -eq 510 ];

then

echo " This is second number "

elif [ $n -eq 999 ];

then

echo " This is third number "

else

echo "No numbers over here"

fi

Ví dụ ở trên cũng có thể được viết dưới case statement:

#!/bin/bash

echo " Enter a valid number"

read n

case $n in

101)

Echo " This is the first number " ;;

510)

echo " This is the second number " ;;

999)

echo " This is the third number " ;;

*)

echo " No numbers over here " ;;

esac

Trong case statements, dấu ;; đại diện cho việc cách nhau từng trường hợp

Lời kết

Vậy là bạn đã hoàn tất học cơ bản của bash function rồi đó. Không khó lắm phải không? Bash mạnh mẽ và lại dễ dùng. Sau khi nắm được cơ bản bash script, bạn có thể đào sâu hơn và tạo nhiều mẫu ví dụ thú vị hơn để khám phá tìm năng của bash function. Chúc may mắn!

 

Author
Tác giả

Hai G.

Hải G. là chuyên gia quản lý, vận hành các dịch vụ website. Anh có nhiều năm kinh nghiệm về VPS, Hosting, technical SEO, CMS. Đặc biệt yêu thích WordPress và đã dùng nó hơn 5 năm nay. Sở thích của anh là đọc, viết blog, đi du lịch và tư vấn cho các bạn trẻ khởi nghiệp.