Trong Linux, tự động hóa quy trình phụ thuộc rất nhiều vào tập lệnh shell. Điều này liên quan đến việc tạo một tệp chứa một loạt lệnh có thể được thực thi cùng nhau.
Trong bài viết này, chúng ta sẽ bắt đầu với những điều cơ bản về tập lệnh bash bao gồm các biến, lệnh, đầu vào/đầu ra và gỡ lỗi. Chúng ta cũng sẽ xem các ví dụ về từng loại trong quá trình thực hiện.
Hãy bắt đầu. 🚀
Mục lục
- Điều kiện tiên quyết
- Giới thiệu
- Định nghĩa về tập lệnh Bash
- Ưu điểm của tập lệnh Bash
- Tổng quan về giao diện dòng lệnh và shell Bash
- Cách bắt đầu với Bash Scripting
- Cách chạy lệnh Bash từ dòng lệnh
- Cách tạo và thực thi tập lệnh Bash
-
Khái niệm cơ bản về tập lệnh Bash
-
Nhận xét trong tập lệnh bash
- Biến và kiểu dữ liệu trong Bash
- Đầu vào và đầu ra trong tập lệnh Bash
- Các lệnh Bash cơ bản (echo, read, v.v.)
-
Câu lệnh có điều kiện (if/else)
-
Vòng lặp và phân nhánh trong Bash
- Vòng lặp while
- Vòng lặp For
- Báo cáo trường hợp
- Cách lên lịch tập lệnh bằng cron
- Cách gỡ lỗi và khắc phục sự cố tập lệnh Bash
- Kết luận
- Tài nguyên để tìm hiểu thêm về tập lệnh Bash
Điều kiện tiên quyết
Để làm theo hướng dẫn này, bạn phải có các quyền truy cập sau:
- Phiên bản Linux đang chạy có quyền truy cập vào dòng lệnh.
Nếu chưa cài đặt Linux hoặc mới bắt đầu, bạn có thể dễ dàng truy cập dòng lệnh Linux thông qua Replit. Replit là một IDE dựa trên trình duyệt nơi bạn có thể truy cập bash shell trong vài phút.
Bạn cũng có thể cài đặt Linux trên hệ thống Windows của mình bằng WSL (Hệ thống con Windows cho Linux). Đây là hướng dẫn cho việc đó.
Giới thiệu
Định nghĩa về tập lệnh Bash
Tập lệnh bash là một tệp chứa một chuỗi lệnh được thực thi bởi dòng chương trình bash theo từng dòng. Nó cho phép bạn thực hiện một loạt hành động, chẳng hạn như điều hướng đến một thư mục cụ thể, tạo thư mục và khởi chạy một quy trình bằng dòng lệnh.
Bằng cách lưu các lệnh này vào tập lệnh, bạn có thể lặp lại cùng một chuỗi các bước nhiều lần và thực thi chúng bằng cách chạy tập lệnh.
Ưu điểm của tập lệnh Bash
Tập lệnh Bash là một công cụ mạnh mẽ và linh hoạt để tự động hóa các tác vụ quản trị hệ thống, quản lý tài nguyên hệ thống và thực hiện các tác vụ thông thường khác trong hệ thống Unix/Linux. Một số ưu điểm của shell script là:
- Tự động hóa :Tập lệnh Shell cho phép bạn tự động hóa các tác vụ và quy trình lặp đi lặp lại, tiết kiệm thời gian và giảm nguy cơ lỗi có thể xảy ra khi thực thi thủ công.
- Tính di động :Tập lệnh Shell có thể chạy trên nhiều nền tảng và hệ điều hành khác nhau, bao gồm Unix, Linux, macOS và thậm chí cả Windows thông qua việc sử dụng trình mô phỏng hoặc máy ảo.
- Tính linh hoạt :Các tập lệnh Shell có khả năng tùy biến cao và có thể dễ dàng sửa đổi để phù hợp với các yêu cầu cụ thể. Chúng cũng có thể được kết hợp với các ngôn ngữ lập trình hoặc tiện ích khác để tạo ra các tập lệnh mạnh mẽ hơn.
- Khả năng truy cập :Tập lệnh Shell rất dễ viết và không yêu cầu bất kỳ công cụ hoặc phần mềm đặc biệt nào. Bạn có thể chỉnh sửa chúng bằng bất kỳ trình soạn thảo văn bản nào và hầu hết các hệ điều hành đều có trình thông dịch shell tích hợp sẵn.
- Tích hợp :Tập lệnh Shell có thể được tích hợp với các công cụ và ứng dụng khác, chẳng hạn như cơ sở dữ liệu, máy chủ web và dịch vụ đám mây, cho phép thực hiện các tác vụ quản lý hệ thống và tự động hóa phức tạp hơn.
- Gỡ lỗi :Tập lệnh Shell rất dễ gỡ lỗi và hầu hết các shell đều có các công cụ gỡ lỗi và báo cáo lỗi tích hợp có thể giúp xác định và khắc phục sự cố nhanh chóng.
Tổng quan về shell Bash và giao diện dòng lệnh
Các thuật ngữ "shell" và "bash" được sử dụng thay thế cho nhau. Nhưng có một sự khác biệt tinh tế giữa hai điều này.
Thuật ngữ "shell" dùng để chỉ một chương trình cung cấp giao diện dòng lệnh để tương tác với hệ điều hành. Bash (Bourne-Again SHell) là một trong những shell Unix/Linux được sử dụng phổ biến nhất và là shell mặc định trong nhiều bản phân phối Linux.
Giao diện shell hoặc dòng lệnh trông như thế này:
Shell chấp nhận lệnh từ người dùng và hiển thị kết quả đầu ra
Trong kết quả đầu ra ở trên, zaira@Zaira là dấu nhắc shell. Khi một shell được sử dụng một cách tương tác, nó sẽ hiển thị $ khi nó đang chờ lệnh từ người dùng.
Nếu shell đang chạy bằng root (người dùng có quyền quản trị), lời nhắc sẽ được thay đổi thành # . Dấu nhắc trình bao siêu người dùng trông như thế này:
[root@host ~]#
Mặc dù Bash là một loại shell nhưng cũng có các loại shell khác, chẳng hạn như shell Korn (ksh), shell C (csh) và shell Z (zsh). Mỗi shell có cú pháp và bộ tính năng riêng nhưng tất cả đều có chung mục đích là cung cấp giao diện dòng lệnh để tương tác với hệ điều hành.
Bạn có thể xác định loại shell của mình bằng cách sử dụng ps lệnh:
ps
Đây là đầu ra cho tôi:
Kiểm tra loại shell. Tôi đang sử dụng bash shell
Tóm lại, trong khi "shell" là một thuật ngữ rộng dùng để chỉ bất kỳ chương trình nào cung cấp giao diện dòng lệnh thì "Bash" là một loại shell cụ thể được sử dụng rộng rãi trong các hệ thống Unix/Linux.
Lưu ý:Trong hướng dẫn này, chúng ta sẽ sử dụng shell "bash".
Cách bắt đầu với Bash Scripting
Chạy lệnh Bash từ dòng lệnh
Như đã đề cập trước đó, dấu nhắc shell trông giống như thế này:
[username@host ~]$
Bạn có thể nhập bất kỳ lệnh nào sau $ ký và xem kết quả trên thiết bị đầu cuối.
Nói chung, các lệnh tuân theo cú pháp sau:
command [OPTIONS] arguments
Hãy cùng thảo luận về một số lệnh bash cơ bản và xem kết quả đầu ra của chúng. Hãy nhớ theo dõi nhé :)
date:Hiển thị ngày hiện tại
zaira@Zaira:~/shell-tutorial$ date
Tue Mar 14 13:08:57 PKT 2023
pwd:Hiển thị thư mục làm việc hiện tại.
zaira@Zaira:~/shell-tutorial$ pwd
/home/zaira/shell-tutorial
ls:Liệt kê nội dung của thư mục hiện tại.
zaira@Zaira:~/shell-tutorial$ ls
check_plaindrome.sh count_odd.sh env log temp
echo:In một chuỗi văn bản hoặc giá trị của một biến tới terminal.
zaira@Zaira:~/shell-tutorial$ echo "Hello bash"
Hello bash
Bạn luôn có thể tham khảo hướng dẫn sử dụng lệnh bằng man lệnh.
Ví dụ:hướng dẫn sử dụng ls trông giống thế này:
Bạn có thể xem chi tiết các tùy chọn cho lệnh bằng cách sử dụng
man
Cách tạo và thực thi tập lệnh Bash
Quy ước đặt tên tập lệnh
Theo quy ước đặt tên, tập lệnh bash kết thúc bằng .sh . Tuy nhiên, các tập lệnh bash có thể chạy hoàn toàn bình thường mà không cần có sh phần mở rộng.
Thêm Shebang
Tập lệnh Bash bắt đầu bằng shebang . Shebang là sự kết hợp của bash # và bang ! theo sau là đường dẫn bash shell. Đây là dòng đầu tiên của kịch bản. Shebang yêu cầu shell thực thi nó thông qua bash shell. Shebang đơn giản là một đường dẫn tuyệt đối đến trình thông dịch bash.
Dưới đây là ví dụ về câu lệnh Shebang.
#!/bin/bash
Bạn có thể tìm thấy đường dẫn bash shell của mình (có thể khác với đường dẫn ở trên) bằng lệnh:
which bash
Tạo tập lệnh bash đầu tiên của chúng tôi
Tập lệnh đầu tiên của chúng tôi nhắc người dùng nhập đường dẫn. Đổi lại, nội dung của nó sẽ được liệt kê.
Tạo một tệp có tên run_all.sh sử dụng vi lệnh. Bạn có thể sử dụng bất kỳ trình soạn thảo nào bạn chọn.
vi run_all.sh
Thêm các lệnh sau vào tệp của bạn và lưu nó:
#!/bin/bash
echo "Today is " `date`
echo -e "\nenter the path to directory"
read the_path
echo -e "\n you path has the following files and folders: "
ls $the_path
Chúng ta hãy nhìn sâu hơn vào từng dòng kịch bản. Tôi đang hiển thị lại cùng một tập lệnh, nhưng lần này có số dòng.
1 #!/bin/bash
2 echo "Today is " `date`
3
4 echo -e "\nenter the path to directory"
5 read the_path
6
7 echo -e "\n you path has the following files and folders: "
8 ls $the_path
- Dòng #1:Sự bùng nổ (
#!/bin/bash) trỏ về đường dẫn bash shell. - Dòng số 2:
echolệnh đang hiển thị ngày giờ hiện tại trên thiết bị đầu cuối. Lưu ý rằngdatecó dấu gạch chéo ngược. - Dòng số 4:Chúng tôi muốn người dùng nhập đường dẫn hợp lệ.
- Dòng số 5:
readlệnh đọc đầu vào và lưu nó vào biếnthe_path. - dòng #8:
lslệnh lấy biến có đường dẫn được lưu trữ và hiển thị các tệp và thư mục hiện tại.
Thực thi tập lệnh bash
Để làm cho tập lệnh có thể thực thi được, hãy gán quyền thực thi cho người dùng của bạn bằng lệnh này:
chmod u+x run_all.sh
Đây,
chmodsửa đổi quyền sở hữu tệp cho người dùng hiện tại :u.+xthêm quyền thực thi cho người dùng hiện tại. Điều này có nghĩa là người dùng là chủ sở hữu hiện có thể chạy tập lệnh.run_all.shlà tập tin chúng tôi muốn chạy.
Bạn có thể chạy tập lệnh bằng bất kỳ phương pháp nào được đề cập:
sh run_all.shbash run_all.sh./run_all.sh
Hãy xem nó hoạt động như thế nào 🚀
Cơ bản về tập lệnh Bash
Nhận xét bắt đầu bằng # trong kịch bản bash. Điều này có nghĩa là bất kỳ dòng nào bắt đầu bằng # là một nhận xét và sẽ bị người phiên dịch bỏ qua.
Nhận xét rất hữu ích trong việc ghi lại mã và bạn nên thêm nhận xét để giúp người khác hiểu mã.
Đây là những ví dụ về nhận xét:
# This is an example comment
# Both of these lines will be ignored by the interpreter
Biến và kiểu dữ liệu trong Bash
Các biến cho phép bạn lưu trữ dữ liệu. Bạn có thể sử dụng các biến để đọc, truy cập và thao tác dữ liệu trong toàn bộ tập lệnh của mình.
Không có kiểu dữ liệu trong Bash. Trong Bash, một biến có khả năng lưu trữ các giá trị số, ký tự riêng lẻ hoặc chuỗi ký tự.
Trong Bash, bạn có thể sử dụng và đặt giá trị biến theo những cách sau:
- Gán giá trị trực tiếp:
country=Pakistan
- Gán giá trị dựa trên đầu ra thu được từ một chương trình hoặc lệnh, sử dụng thay thế lệnh. Lưu ý rằng
$được yêu cầu để truy cập vào giá trị của biến hiện có.
same_country=$country
Để truy cập giá trị biến, hãy thêm $ vào tên biến.
zaira@Zaira:~$ country=Pakistan
zaira@Zaira:~$ echo $country
Pakistan
zaira@Zaira:~$ new_country=$country
zaira@Zaira:~$ echo $new_country
Pakistan
Quy ước đặt tên biến
Trong tập lệnh Bash, sau đây là các quy ước đặt tên biến:
- Tên biến phải bắt đầu bằng một chữ cái hoặc dấu gạch dưới (
_). - Tên biến có thể chứa chữ cái, số và dấu gạch dưới (
_). - Tên biến có phân biệt chữ hoa chữ thường.
- Tên biến không được chứa dấu cách hoặc ký tự đặc biệt.
- Sử dụng tên mô tả phản ánh mục đích của biến.
- Tránh sử dụng các từ khóa dành riêng, chẳng hạn như
if,then,else,fi, v.v. làm tên biến.
Dưới đây là một số ví dụ về tên biến hợp lệ trong Bash:
name
count
_var
myVar
MY_VAR
Và đây là một số ví dụ về tên biến không hợp lệ:
2ndvar (variable name starts with a number)
my var (variable name contains a space)
my-var (variable name contains a hyphen)
Việc tuân theo các quy ước đặt tên này giúp làm cho tập lệnh Bash dễ đọc hơn và dễ bảo trì hơn.
Đầu vào và đầu ra trong tập lệnh Bash
Thu thập thông tin đầu vào
Trong phần này, chúng ta sẽ thảo luận về một số phương pháp cung cấp đầu vào cho tập lệnh của chúng ta.
- Đọc dữ liệu đầu vào của người dùng và lưu nó vào một biến
Chúng ta có thể đọc dữ liệu đầu vào của người dùng bằng read lệnh.
#!/bin/bash
echo "What's your name?"
read entered_name
echo -e "\nWelcome to bash tutorial" $entered_name
- Đọc từ một tập tin
Mã này đọc từng dòng từ một tệp có tên input.txt và in nó đến thiết bị đầu cuối. Chúng ta sẽ nghiên cứu các vòng lặp while ở phần sau của bài viết này.
while read line
do
echo $line
done < input.txt
- Đối số dòng lệnh
Trong tập lệnh hoặc hàm bash, $1 biểu thị đối số ban đầu được truyền, $2 biểu thị đối số thứ hai đã được thông qua, v.v.
Tập lệnh này lấy tên làm đối số dòng lệnh và in lời chào được cá nhân hóa.
echo "Hello, $1!"
Chúng tôi đã cung cấp Zaira làm đối số của chúng tôi cho tập lệnh.
#!/bin/bash
echo "Hello, $1!"
Đầu ra:
Hiển thị đầu ra
Ở đây chúng ta sẽ thảo luận về một số phương pháp nhận đầu ra từ tập lệnh.
- In tới thiết bị đầu cuối:
echo "Hello, World!"
Điều này in dòng chữ "Xin chào, Thế giới!" tới thiết bị đầu cuối.
- Ghi vào một tập tin:
echo "This is some text." > output.txt
Điều này viết văn bản "Đây là một số văn bản." vào một tập tin có tên output.txt . Lưu ý rằng > toán tử ghi đè lên một tập tin nếu nó đã có một số nội dung.
- Đang thêm vào một tệp:
echo "More text." >> output.txt
Điều này nối thêm văn bản "Thêm văn bản." đến cuối file output.txt .
- Chuyển hướng đầu ra:
ls > files.txt
Thao tác này liệt kê các tệp trong thư mục hiện tại và ghi kết quả đầu ra vào tệp có tên files.txt . Bạn có thể chuyển hướng đầu ra của bất kỳ lệnh nào tới một tệp theo cách này.
Các lệnh Bash cơ bản (echo, read, v.v.)
Dưới đây là danh sách một số lệnh bash được sử dụng phổ biến nhất:
cd:Thay đổi thư mục sang vị trí khác.ls:Liệt kê nội dung của thư mục hiện tại.mkdir:Tạo một thư mục mới.touch:Tạo một tập tin mới.rm:Xóa một tập tin hoặc thư mục.cp:Sao chép một tập tin hoặc thư mục.mv:Di chuyển hoặc đổi tên một tập tin hoặc thư mục.echo:In văn bản tới thiết bị đầu cuối.cat:Nối và in nội dung của một tập tin.grep:Tìm kiếm mẫu trong tệp.chmod:Thay đổi quyền của một tập tin hoặc thư mục.sudo:Chạy lệnh với đặc quyền quản trị.df:Hiển thị dung lượng ổ đĩa có sẵn.history:Hiển thị danh sách các lệnh đã thực hiện trước đó.ps:Hiển thị thông tin về các tiến trình đang chạy.
Câu lệnh có điều kiện (if/else)
Các biểu thức tạo ra kết quả boolean, đúng hoặc sai, được gọi là điều kiện. Có một số cách để đánh giá các điều kiện, bao gồm if , if-else , if-elif-else và các điều kiện lồng nhau.
Cú pháp :
if [[ condition ]];
then
statement
elif [[ condition ]]; then
statement
else
do this by default
fi
Chúng ta có thể sử dụng các toán tử logic như AND -a và HOẶC -o để có những so sánh có ý nghĩa hơn.
if [ $a -gt 60 -a $b -lt 100 ]
Hãy xem ví dụ về tập lệnh Bash sử dụng if , if-else , và if-elif-else câu lệnh để xác định xem số do người dùng nhập vào là dương, âm hay bằng 0:
#!/bin/bash
echo "Please enter a number: "
read num
if [ $num -gt 0 ]; then
echo "$num is positive"
elif [ $num -lt 0 ]; then
echo "$num is negative"
else
echo "$num is zero"
fi
Tập lệnh đầu tiên sẽ nhắc người dùng nhập một số. Sau đó, nó sử dụng if câu lệnh để kiểm tra xem số này có lớn hơn 0 hay không. Nếu đúng như vậy, tập lệnh sẽ xuất ra số đó là số dương. Nếu số không lớn hơn 0, tập lệnh sẽ chuyển sang câu lệnh tiếp theo, đó là if-elif tuyên bố. Ở đây, tập lệnh sẽ kiểm tra xem số đó có nhỏ hơn 0 hay không. Nếu đúng như vậy, tập lệnh sẽ xuất ra số âm. Cuối cùng, nếu số không lớn hơn 0 cũng không nhỏ hơn 0 thì tập lệnh sẽ sử dụng else câu lệnh để xuất ra rằng số đó bằng 0.
Chứng kiến nó hoạt động 🚀
Vòng lặp và phân nhánh trong Bash
Vòng lặp while
Vòng lặp while kiểm tra một điều kiện và lặp cho đến khi điều kiện đó vẫn còn true . Chúng ta cần cung cấp một câu lệnh đếm để tăng bộ đếm để kiểm soát việc thực thi vòng lặp.
Trong ví dụ bên dưới, (( i += 1 )) là câu lệnh truy cập làm tăng giá trị của i . Vòng lặp sẽ chạy đúng 10 lần.
#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
echo "$i"
(( i += 1 ))
done
Vòng lặp For
for vòng lặp, giống như while vòng lặp, cho phép bạn thực hiện các câu lệnh với số lần cụ thể. Mỗi vòng lặp khác nhau về cú pháp và cách sử dụng.
Trong ví dụ bên dưới, vòng lặp sẽ lặp 5 lần.
#!/bin/bash
for i in {1..5}
do
echo $i
done
Báo cáo trường hợp
Trong Bash, các câu lệnh tình huống được sử dụng để so sánh một giá trị nhất định với danh sách các mẫu và thực thi một khối mã dựa trên mẫu đầu tiên khớp. Cú pháp của câu lệnh case trong Bash như sau:
case expression in
pattern1)
# code to execute if expression matches pattern1
;;
pattern2)
# code to execute if expression matches pattern2
;;
pattern3)
# code to execute if expression matches pattern3
;;
*)
# code to execute if none of the above patterns match expression
;;
esac
Ở đây, "biểu thức" là giá trị mà chúng ta muốn so sánh và "pattern1", "pattern2", "pattern3", v.v. là các mẫu mà chúng ta muốn so sánh với nó.
Dấu chấm phẩy kép ";;" tách từng khối mã để thực thi cho từng mẫu. Dấu hoa thị "*" đại diện cho trường hợp mặc định, sẽ thực thi nếu không có mẫu nào được chỉ định khớp với biểu thức.
Hãy xem một ví dụ.
fruit="apple"
case $fruit in
"apple")
echo "This is a red fruit."
;;
"banana")
echo "This is a yellow fruit."
;;
"orange")
echo "This is an orange fruit."
;;
*)
echo "Unknown fruit."
;;
esac
Trong ví dụ này, vì giá trị của "trái cây" là "táo" nên mẫu đầu tiên khớp với khối mã lặp lại "Đây là trái cây màu đỏ". được thực thi. Nếu giá trị của "trái cây" thay vào đó là "chuối", mẫu thứ hai sẽ khớp và khối mã vang lên "Đây là trái cây màu vàng". sẽ thực thi, v.v. Nếu giá trị của "trái cây" không khớp với bất kỳ mẫu nào được chỉ định thì trường hợp mặc định sẽ được thực thi, tạo ra "Trái cây không xác định".
Cách lên lịch tập lệnh bằng cron
Cron là một tiện ích mạnh mẽ để lập lịch công việc có sẵn trong các hệ điều hành giống Unix. Bằng cách định cấu hình cron, bạn có thể thiết lập các công việc tự động để chạy hàng ngày, hàng tuần, hàng tháng hoặc thời gian cụ thể. Khả năng tự động hóa do cron cung cấp đóng một vai trò quan trọng trong quản trị hệ thống Linux.
Dưới đây là cú pháp để lên lịch cho cron:
# Cron job example
* * * * * sh /path/to/script.sh
Đây là * s tương ứng là (các) phút (các) giờ (các) ngày (các) tháng (các) ngày trong tuần.
Dưới đây là một số ví dụ về lập lịch công việc định kỳ.
0 0 Chạy tập lệnh vào lúc nửa đêm mỗi ngày0 0 /path/to/script.sh /5 Chạy tập lệnh 5 phút một lần/5 /path/to/script.sh 0 6 1-5 Chạy script lúc 6 giờ sáng từ thứ Hai đến thứ Sáu0 6 1-5 /path/to/script.sh 0 0 1-7 Chạy tập lệnh vào 7 ngày đầu tiên hàng tháng0 0 1-7 /path/to/script.sh 0 12 1 Chạy tập lệnh vào buổi trưa ngày đầu tiên hàng tháng0 12 1 /path/to/script.sh Sử dụng crontab
crontab tiện ích được sử dụng để thêm và chỉnh sửa các công việc định kỳ.
crontab -l liệt kê các tập lệnh đã được lên lịch cho một người dùng cụ thể.
Bạn có thể thêm và chỉnh sửa cron thông qua crontab -e .
Bạn có thể đọc thêm về công việc trồng ngô trong bài viết khác của tôi ở đây.
Cách gỡ lỗi và khắc phục sự cố tập lệnh Bash
Gỡ lỗi và khắc phục sự cố là những kỹ năng cần thiết đối với bất kỳ người viết kịch bản Bash nào. Mặc dù các tập lệnh Bash có thể cực kỳ mạnh mẽ nhưng chúng cũng có thể dễ xảy ra lỗi và có hành vi không mong muốn. Trong phần này, chúng ta sẽ thảo luận về một số mẹo và kỹ thuật để gỡ lỗi và khắc phục sự cố với tập lệnh Bash.
Đặt set -x tùy chọn
Một trong những kỹ thuật hữu ích nhất để gỡ lỗi tập lệnh Bash là đặt set -x tùy chọn ở đầu tập lệnh. Tùy chọn này kích hoạt chế độ gỡ lỗi, khiến Bash in từng lệnh mà nó thực thi tới thiết bị đầu cuối, trước + ký tên. Điều này có thể cực kỳ hữu ích trong việc xác định lỗi xảy ra ở đâu trong tập lệnh của bạn.
#!/bin/bash
set -x
# Your script goes here
Kiểm tra mã thoát
Khi Bash gặp lỗi, nó sẽ đặt mã thoát cho biết bản chất của lỗi. Bạn có thể kiểm tra mã thoát của lệnh gần đây nhất bằng cách sử dụng $? biến. Giá trị 0 biểu thị thành công, trong khi bất kỳ giá trị nào khác biểu thị lỗi.
#!/bin/bash
# Your script goes here
if [ $? -ne 0 ]; then
echo "Error occurred."
fi
Sử dụng echo tuyên bố
Một kỹ thuật hữu ích khác để gỡ lỗi các tập lệnh Bash là chèn echo các câu lệnh xuyên suốt mã của bạn. Điều này có thể giúp bạn xác định lỗi đang xảy ra ở đâu và giá trị nào đang được chuyển cho các biến.
#!/bin/bash
# Your script goes here
echo "Value of variable x is: $x"
# More code goes here
Sử dụng set -e tùy chọn
Nếu bạn muốn tập lệnh của mình thoát ngay lập tức khi bất kỳ lệnh nào trong tập lệnh bị lỗi, bạn có thể sử dụng set -e tùy chọn. Tùy chọn này sẽ khiến Bash thoát ra với lỗi nếu bất kỳ lệnh nào trong tập lệnh bị lỗi, giúp việc xác định và sửa lỗi trong tập lệnh của bạn dễ dàng hơn.
#!/bin/bash
set -e
# Your script goes here
Khắc phục sự cố bằng cách xác minh nhật ký
Chúng tôi có thể khắc phục sự cố bằng cách sử dụng tệp nhật ký. Nhật ký được duy trì cho tất cả các công việc theo lịch trình. Bạn có thể kiểm tra và xác minh trong nhật ký xem một công việc cụ thể có chạy như dự định hay không.
Đối với Ubuntu/Debian, bạn có thể tìm thấy cron nhật ký tại:
/var/log/syslog
Vị trí khác nhau đối với các bản phân phối khác.
Tệp nhật ký công việc định kỳ có thể trông như thế này:
2022-03-11 00:00:01 Task started
2022-03-11 00:00:02 Running script /path/to/script.sh
2022-03-11 00:00:03 Script completed successfully
2022-03-11 00:05:01 Task started
2022-03-11 00:05:02 Running script /path/to/script.sh
2022-03-11 00:05:03 Error: unable to connect to database
2022-03-11 00:05:03 Script exited with error code 1
2022-03-11 00:10:01 Task started
2022-03-11 00:10:02 Running script /path/to/script.sh
2022-03-11 00:10:03 Script completed successfully
Kết luận
Trong bài viết này, chúng tôi bắt đầu với cách truy cập terminal và sau đó chạy một số lệnh bash cơ bản. Chúng tôi cũng đã nghiên cứu bash shell là gì. Chúng tôi đã xem xét ngắn gọn việc phân nhánh mã bằng cách sử dụng vòng lặp và điều kiện. Cuối cùng, chúng ta đã thảo luận về việc tự động hóa các tập lệnh bằng cron, sau đó là một số kỹ thuật khắc phục sự cố.
Tài nguyên để tìm hiểu thêm về tập lệnh Bash
Nếu bạn muốn tìm hiểu sâu hơn về thế giới bash script, tôi khuyên bạn nên xem khóa học 6 giờ về Linux này tại freeCodeCamp.
Điều bạn yêu thích nhất mà bạn học được từ hướng dẫn này là gì? Bạn cũng có thể kết nối với tôi trên bất kỳ nền tảng nào trong số này. 📧�
Hẹn gặp lại bạn ở bài hướng dẫn tiếp theo, chúc bạn viết mã vui vẻ 😁
Tín dụng hình ảnh biểu ngữ:Hình ảnh của Freepik
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu