Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Cách tạo tập lệnh Shell đơn giản trong Linux

Tạo tập lệnh shell là một trong những kỹ năng cần thiết nhất mà người dùng Linux nên có ở đầu ngón tay. Các tập lệnh shell đóng một vai trò to lớn trong việc tự động hóa các tác vụ lặp đi lặp lại mà nếu không thì việc thực thi từng dòng sẽ rất tẻ nhạt.

Trong hướng dẫn này, chúng tôi nêu bật một số thao tác lập trình kịch bản shell cơ bản mà mọi người dùng Linux nên có.

1. Tạo một tập lệnh Shell đơn giản

Tập lệnh shell là một tệp bao gồm ASCII chữ. Chúng ta sẽ bắt đầu bằng cách tạo một script shell đơn giản và để làm điều này, chúng ta sẽ sử dụng một trình soạn thảo văn bản. Có khá nhiều trình soạn thảo văn bản, cả dòng lệnh và GUI. Đối với hướng dẫn này, chúng tôi sẽ sử dụng trình chỉnh sửa vim.

Chúng tôi sẽ bắt đầu bằng cách tạo một tập lệnh đơn giản hiển thị “ Xin chào thế giới ”Khi được thực thi.

$ vim hello.sh

Dán nội dung sau vào tệp và lưu.

#!/bin/bash
# Print Hello world message
echo "Hello World!"

Hãy xem qua từng dòng của tập lệnh shell.

  • Dòng đầu tiên - #!/bin/bash - được gọi là tiêu đề shebang. Đây là một cấu trúc đặc biệt cho biết chương trình nào sẽ được sử dụng để diễn giải tập lệnh. Trong trường hợp này, đây sẽ là bash shell được chỉ định bởi / bin / bash . Có các ngôn ngữ tập lệnh khác, chẳng hạn như Python được ký hiệu là #!/usr/bin/python3 Perl có tiêu đề shebang được ký hiệu là #!/usr/bin/perl .
  • Dòng thứ hai là một nhận xét. Chú thích là một câu lệnh mô tả những gì một tập lệnh shell thực hiện và không được thực thi khi tập lệnh được chạy. Nhận xét luôn đứng trước dấu thăng # .
  • Dòng cuối cùng là lệnh in ‘ Hello World Trên thiết bị đầu cuối.

Bước tiếp theo là làm cho tập lệnh có thể thực thi được bằng cách chỉ định quyền thực thi bằng cách sử dụng chmod lệnh như được hiển thị.

$ chmod +x  hello.sh

Cuối cùng, chạy tập lệnh shell bằng một trong các lệnh:

$ bash hello.sh
OR
$ ./hello.sh
Cách tạo tập lệnh Shell đơn giản trong Linux

2. Sử dụng câu lệnh có điều kiện để thực thi mã

Giống như các ngôn ngữ lập trình khác, câu lệnh điều kiện được sử dụng trong tập lệnh bash để đưa ra quyết định, chỉ với một chút thay đổi trong cú pháp. Chúng tôi sẽ đề cập đến nếu , if-else, elif câu lệnh điều kiện.

Ví dụ về câu lệnh if Chỉ

if câu lệnh có thể được sử dụng để kiểm tra một hoặc nhiều điều kiện. Chúng tôi sẽ bắt đầu với việc sử dụng cơ bản của if câu lệnh để kiểm tra một điều kiện duy nhất. if câu lệnh được xác định bởi if ... fi khối.

if command
then
  statement
fi

Hãy xem kịch bản shell bên dưới.

#!/bin/bash
echo 'Enter the score'
read x

if [[ $x == 70 ]]; then
  echo 'Good job!'
fi

Tập lệnh shell ở trên nhắc người dùng cung cấp điểm sau đó được lưu trữ trong một biến x . Nếu điểm tương ứng với 70 , tập lệnh trả về kết quả đầu ra “ Làm tốt lắm! ”. Toán tử so sánh == được sử dụng để kiểm tra xem điểm đã nhập, được lưu trữ trong biến x , tương đương với 100 .

Cách tạo tập lệnh Shell đơn giản trong Linux

Các toán tử so sánh khác mà bạn có thể sử dụng bao gồm:

  • -eq - Bằng
  • -ne - Không bằng
  • -lt - Ít hơn
  • -le - Nhỏ hơn hoặc bằng
  • -lt - Ít hơn
  • -ge - Lớn hơn hoặc bằng

Ví dụ: câu lệnh if khối bên dưới in ra ‘ Work Harder 'Nếu điểm đầu vào là bất kỳ giá trị nào nhỏ hơn 50 .

if [[ $x -lt 50 ]]; then
  echo 'Work Harder!'
fi
Cách tạo tập lệnh Shell đơn giản trong Linux

Ví dụ về Câu lệnh if-else

Đối với các tình huống mà bạn có 2 kết quả có thể xảy ra:- dù điều này hay điều kia - câu lệnh if-else rất hữu ích.

if command
then
  statement1
else
  statement2
fi

Tập lệnh bên dưới đọc điểm đầu vào và kiểm tra xem nó lớn hơn hoặc bằng 70 .

Nếu điểm lớn hơn hoặc bằng 70 , bạn nhận được một ‘ công việc tuyệt vời, bạn đã vượt qua! ' thông điệp. Tuy nhiên, nếu điểm số giảm xuống dưới 70 , đầu ra ‘ Bạn không thành công 'Sẽ được in.

#!/bin/bash

echo 'Enter the score'

read x

if [[ $x -ge 70 ]]; then
  echo 'Great job, You passed!'
else
  echo  'You failed'
fi
Cách tạo tập lệnh Shell đơn giản trong Linux

Ví dụ về Câu lệnh if-elif-else

Trong các tình huống có nhiều điều kiện và kết quả khác nhau, if-elif-else câu lệnh được sử dụng. Câu lệnh này có định dạng sau.

if condition1
then
  statement1
elif condition2
then
  statement2
else
  statement3
fi

Ví dụ:chúng tôi có một tập lệnh cho xổ số để kiểm tra xem số được nhập có phải là 90 không , 60 hoặc 30 .

#!/bin/bash

echo 'Enter the score'

read x

if [[ $x -eq 90 ]];
then
  echo “You have won the First Prize”

elif [[ $x -eq 60 ]];
then
  echo “You have won the Second Prize”

elif [[ $x -eq 30 ]];
then 
  echo “You have won the Second Prize”
else
  echo “Please try again”
fi
Cách tạo tập lệnh Shell đơn giản trong Linux

3. Sử dụng câu lệnh If với AND logic

Bạn có thể sử dụng if cùng với AND toán tử logic để thực hiện một tác vụ nếu hai điều kiện được thỏa mãn. && toán tử được sử dụng để biểu thị logic.

#!/bin/bash

echo 'Please Enter your user_id'
read user_id

echo 'Please Enter your tag_no'
read tag_id

if [[ ($user_id == “tecmint” && $tag_id -eq 3990) ]];
then
  echo “Login successful”
else
  echo “Login failure”
fi

5. Sử dụng câu lệnh If với HOẶC logic

Khi sử dụng nút HOẶC logic, được đại diện bởi || biểu tượng, một trong hai điều kiện cần được thỏa mãn với tập lệnh để đưa ra kết quả mong đợi.

#!/bin/bash

echo 'Please enter a random number'
read number

if [[ (number -eq 55 || number -eq 80) ]];
then
 echo 'Congratulations! You’ve won'
else
 echo 'Sorry, try again'
fi
Cách tạo tập lệnh Shell đơn giản trong Linux

Sử dụng cấu trúc vòng lặp

Bash vòng lặp cho phép người dùng thực hiện một loạt tác vụ cho đến khi đạt được một kết quả nhất định. Điều này rất hữu ích trong việc thực hiện các tác vụ lặp đi lặp lại. Trong phần này, chúng ta sẽ xem xét một số vòng lặp mà bạn cũng có thể tìm thấy trong các ngôn ngữ lập trình khác.

Vòng lặp trong khi

Đây là một trong những vòng lặp dễ làm việc nhất. Cú pháp khá đơn giản:

while  <some test>
do
 commands
done

Vòng lặp while bên dưới liệt kê tất cả các số từ 1 đến 10 khi được thực thi.

#!/bin/bash
# A simple while loop
counter=1
while [ $counter -le 10 ]
 do
echo $counter
 ((counter++))
done

Hãy giải thích vòng lặp while:

Biến bộ đếm được khởi tạo thành 1 . Và trong khi biến nhỏ hơn hoặc bằng 10 , giá trị của bộ đếm sẽ được tăng dần cho đến khi thỏa mãn điều kiện. Dòng echo $ counter in tất cả các số từ 1 đến 10.

Cách tạo tập lệnh Shell đơn giản trong Linux

Vòng lặp for

Giống như vòng lặp while , một vòng lặp for được sử dụng để thực thi mã lặp đi lặp lại. I E. lặp lại thực thi mã nhiều lần nhất có thể do người dùng xác định.

Cú pháp là:

for var in 1 2 3 4 5 N
do
 command1
 command2
done

Vòng lặp for bên dưới lặp lại từ 1 đến 10 và xử lý các giá trị của chúng trên màn hình.

Cách tạo tập lệnh Shell đơn giản trong Linux

Cách tốt hơn để đạt được điều này là xác định một phạm vi bằng cách sử dụng dấu ngoặc nhọn kép { } như được hiển thị thay vì nhập tất cả các số.

#!/bin/bash
# Specify range in a for loop

for num in {1..10}
do
  echo $num
done

Tham số vị trí Bash

Tham số vị trí là một biến đặc biệt được tham chiếu trong tập lệnh khi các giá trị được truyền trên shell nhưng không thể được gán. Thông số vị trí chạy từ $ 0 $ 1 $ 2 $ 3 …… đến $ 9 . Vượt ra ngoài $ 9 giá trị, các tham số phải được đặt trong dấu ngoặc nhọn, ví dụ: $ {10}, $ {11}… và như vậy.

Khi thực thi tập lệnh, tham số vị trí đầu tiên là $ 0 lấy tên của kịch bản shell. $ 1 tham số nhận biến đầu tiên được truyền trên thiết bị đầu cuối, $ 2 lấy thứ hai, $ 3 thứ ba, v.v.

Hãy tạo một script test.sh như được hiển thị.

#!/bin/bash
echo "The name of the script is: " $0
echo "My first name is: " $1
echo "My second name is: " $2

Tiếp theo, thực thi tập lệnh và cung cấp tên đầu tiên và tên thứ hai làm đối số:

# bash test.sh James Kiarie
Cách tạo tập lệnh Shell đơn giản trong Linux

Từ đầu ra, chúng ta có thể thấy rằng biến đầu tiên được in là tên của tập lệnh shell, trong trường hợp này là test.sh . Sau đó, các tên được in ra tương ứng với các tham số vị trí được xác định trong tập lệnh shell.

Tham số vị trí hữu ích ở chỗ chúng giúp bạn tùy chỉnh dữ liệu được nhập thay vì chỉ định rõ ràng giá trị cho một biến.

Mã thoát lệnh Shell

Hãy bắt đầu bằng cách trả lời một câu hỏi đơn giản, mã thoát là gì ?

Mọi lệnh được thực thi trên shell bởi người dùng hoặc tập lệnh shell đều có trạng thái thoát. Trạng thái thoát là một số nguyên.

Trạng thái thoát của 0 ngụ ý rằng lệnh được thực thi thành công mà không có bất kỳ lỗi nào. Bất kỳ thứ gì trong khoảng từ 1 đến 255 cho thấy rằng lệnh không thành công hoặc không thực thi thành công.

Để tìm trạng thái thoát của một lệnh, hãy sử dụng $? Biến Shell.

Trạng thái thoát 1 chỉ ra lỗi chung hoặc bất kỳ lỗi nào không thể chấp nhận được, chẳng hạn như chỉnh sửa tệp mà không có quyền sudo.

Trạng thái thoát 2 chỉ đến việc sử dụng sai lệnh hoặc biến shell nội trang.

127 trạng thái thoát trỏ đến một lệnh bất hợp pháp thường tạo ra lệnh ‘ không tìm thấy lệnh 'Lỗi.

Cách tạo tập lệnh Shell đơn giản trong Linux

Xử lý đầu ra của các lệnh Shell trong một tập lệnh

Trong kịch bản bash, bạn có thể lưu trữ kết quả đầu ra của một lệnh trong một biến để sử dụng trong tương lai. Điều này cũng được gọi là thay thế lệnh shell và có thể đạt được theo những cách sau.

variable=$(command)
OR
variable=$(/path/to/command)
OR
variable=$(command argument 1 argument 2 ...)

Ví dụ:bạn có thể lưu trữ ngày lệnh trong một biến có tên hôm nay và gọi tập lệnh shell để hiển thị ngày hiện tại.

#!/bin/bash

today=$(date)

echo “Today is $today”
Cách tạo tập lệnh Shell đơn giản trong Linux

Hãy lấy một ví dụ khác. Giả sử bạn muốn tìm người dùng đăng nhập hợp lệ trên hệ thống Linux của mình. Bạn sẽ đi về nó như thế nào? Đầu tiên, danh sách tất cả người dùng (cả hệ thống, quy trình và người dùng đăng nhập) được lưu trữ trong / etc / passwd tệp.

Để xem tệp, bạn cần sử dụng lệnh mèo. Tuy nhiên, để thu hẹp người dùng đăng nhập, hãy sử dụng lệnh grep để tìm kiếm người dùng bằng / bin / bash và sử dụng thuộc tính cut -c 1-10 như hình minh họa để hiển thị 10 ký tự đầu tiên của tên.

Chúng tôi đã lưu trữ lệnh cat tới login_users biến.

#!/bin/bash
login_users=$(cat /etc/passwd | grep /bin/bash | cut -c 1-10)
echo 'This is the list of login users:
echo $login_users
Cách tạo tập lệnh Shell đơn giản trong Linux

Điều này kết thúc phần hướng dẫn của chúng tôi về việc tạo các tập lệnh shell đơn giản. Chúng tôi hy vọng bạn thấy điều này có giá trị.