Lập trình shell cơ bản

     

Bài viết này giới thiệu chúng ta về cách lập trình bash shell siêu cơ bản trên hệ quản lý Linux, giới thiệu với cách chúng ta về công dụng và cách áp dụng của lập trình bash shell để các bạn có thể tự tìm hiểu và tự học Linux cơ bạn dạng dễ dàng hơn.

Bạn đang xem: Lập trình shell cơ bản

Bạn sẽ xem: lập trình sẵn shell cơ bản

1. Ra mắt về lập trình sẵn bash shell

Giới thiệu về thiết kế bash shell

Shell script là 1 trong chương trình được áp dụng cho nhiều mục tiêu khác nhau, chẳng hạn rất thật thi lệnh shell, chạy những lệnh cùng nhau, tùy chỉnh cấu hình các tác vụ cai quản trị, thực hiện tự động hóa hóa,... Mà các bạn thường xuyên thực hiện trên máy tính của mình.

Shell script cho phép bọn họ lập trình những lệnh theo một chuỗi và khối hệ thống sẽ tiến hành chúng. Viết shell script có thể chấp nhận được bạn sử dụng các công dụng lập trình như các vòng lặp for, những câu lệnh if/then/else... Shell script tất cả sẵn trên phần đông các bạn dạng phân phối Linux, bên trên MacOS và Cygwin bên trên Windows.

Shell script chỉ là các tập tin văn bạn dạng đơn giản. Bạn có thể sử dụng bất kỳ trình soạn thảo văn bản để viết như: vim, nano, gedit, emacs, vscode,...

Tiện ích của shell script:

Nó rất có thể nhận đầu vào từ fan dùng, tệp, hoặc công dụng từ màn hình.Giúp cho chúng ta cũng có thể tạo nhóm lệnh riêng.Shell script giúp chúng ta tiết kiệm thời gian.Có tài năng thực hiện tự động một số các bước mà bạn liên tiếp trên máy vi tính của mình.2. Các khái niệm cơ bản khi viết bash shell

Các tập lệnh được lưu trữ dưới dạng những tập tin chúng ta có thể đặt tên tùy ý cho tập lệnh shell. Tuy thế điều quan trọng đầu tiên là nó cần bắt đầu với một shebang ngay loại đầu tiên:

#!/bin/bashTiếp theo thì nó phải là 1 trong những tập tin thực thi. Để rất có thể phân quyền mang đến tập tin là xúc tiến thì chúng ta sử dụng lệnh chmod:

chmod u+x myscriptLệnh trên giúp cho tập tin myscript của bạn cũng có thể thực thi được cho tất cả những người dùng của bạn.

Bạn rất có thể thực thi tập lệnh nếu khách hàng đang nghỉ ngơi trong và một thư mục bằng phương pháp gọi nó ./myscript hoặc sử dụng đường dẫn không thiếu thốn đến nó.

Ngoài cách triển khai trên chúng ta cũng có thể sử dụng lệnh bash để triển khai cú pháp như sau:

bash duong-dan-file-scriptVí dụ 1: Sử dụng tài năng chú phù hợp trong bash shell

Chú ham mê là trong những điều đặc trưng nhất khi viết chương trình. Một dòng ban đầu bằng ký tự # là 1 trong chú ưa thích (ngoại trừ dòng shebang sinh sống trên).

#!/bin/bash# this is a commentMột bình luận cũng có thể ban đầu ở cuối dòng:

#!/bin/bashecho myscript # this is a commentVí dụ 2: trở thành và toán tử trong bash shell

Chúng ta hoàn toàn có thể đặt biến bằng phương pháp sử dụng toán tử = cú pháp như sau:

name=valueVí dụ:

NUMBER=1999name=giangdien.com.vnSau lúc để biến bạn có thể in một biến bằng cách sử dụng lệnh echo và thêm một cam kết tự $ tiếp theo là thương hiệu biến:

echo $NUMBERecho $nameBash shell sử dụng một số toán tử số học tập thường được dùng trên những ngôn ngữ lập trình:

Phép so sánhÝ nghĩa
hoặc -ltBé hơn
hoặc -leBé hơn bằng
> hoặc -gtLớn hơn
>= hoặc -geLớn hơn bằng
== hoặc -eqBằng nhau
-neKhông bằng

Ví dụ sử dụng so sánh giá trị trong bash shell:

#!/bin/bashage=23min_age=18if test $age -lt $min_age then echo "Not old enough"fiToán tử logic:

&& xúc tích và|| ngắn gọn xúc tích hoặc

Ví dụ 3: những biến đặc biệt trong Linux. Các biến này được giành riêng cho các tính năng cụ thể.

Ký từ bỏ $ thay mặt đại diện cho số ID tiến trình, hoặc PID.

localhost ~># echo $$6565Bảng sau đây thống kê một số biến đặc biệt mà bạn cũng có thể sử dụng trong lập trình bash shell:

BiếnÝ nghĩa
$0Tên tập tin của tập lệnh hiện tại tại.
$nCác trở thành này tương xứng với các đối số cơ mà tập lệnh được gọi. Ở phía trên n là số nguyên dương tương xứng với vị trí của một đối số (đối số thứ nhất là $1, đối số thiết bị hai là $2,...).
$#Số lượng đối số được cung cấp cho một tập lệnh.
$*Tất cả các đối số được trích dẫn vội đôi.
$Tất cả những đối số được trích dẫn riêng biệt lẻ.
$?Trạng thái bay của lệnh ở đầu cuối được thực thi.
$!Số tiến trình của lệnh nền cuối cùng.
localhost ~># vi test.sh#!/bin/shecho "Ten tệp tin hien tai: $0"echo "Doi so 1: $1"echo "Doi so 2: $2"echo "Doi so 3: $3"echo "Tong cac doi so: $#"echo "Tat ca doi so duoc trich dan: $localhost ~># ./test.sh https:// giangdien.com.vn .netTen file hien tai: ./test.shDoi so 1: https://Doi so 2: giangdien.com.vnDoi so 3: .netTong cac doi so: 3Tat ca doi so duoc trich dan: https:// giangdien.com.vn .netTat ca doi so duoc trich dan: https:// giangdien.com.vn .netVí dụ 2: phối hợp tham số đặc biệt quan trọng #localhost ~># vi test_2.sh#!/bin/sh#Su dung bien dac biet $*for a in $*doecho $adone#Su dung bien dac biet $localhost ~># ./test_2.sh Day la website giangdien.com.vnDaylawebsitegiangdien.com.vnDaylawebsitegiangdien.com.vnVí dụ 3: tâm lý thoát của lệnh sau cùng được thực thi:

localhost ~># mèo exit.sh#!/bin/shecho "Trang bầu thoat cua lenh cuoi cung duoc thuc thi: $?"Chạy tệp cùng với lệnh bash:

localhost ~># bash exit.shTrang thai thoat cua lenh cuoi cung duoc thuc thi: 0Theo khoác định thì hầu như các lệnh được triển khai thành công thì trả về một tâm lý thoát là 0 với 1 nếu bọn chúng không thành công.

3. Thực hiện bash shell3.1. áp dụng bash shell in ra màn hình

Chạy lệnh sau từ vật dụng đầu cuối để triển khai một câu lệnh bash rất đơn giản. Đầu ra của lệnh vẫn là giangdien.com.vn.

localhost ~># echo "giangdien.com.vn"giangdien.com.vnNhưng khi chúng ta cần tiến hành in ra screen nhiều đầu ra output và tiến hành thường xuyên thì vấn đề gõ lệnh bên trên bash vô cùng tốn thời gian vì vậy chúng ta sẽ sản xuất một bash shell in ra màn hình, lúc cần chúng ta chỉ đề nghị chạy file bash shell đó. Các bước như sau:

Đầu tiên họ sử dụng trình biên soạn thảo để chế tạo ra một tập tin bash. Ở đây họ dùng trình soạn thảo văn phiên bản vi được để chế tạo ra tập tin và tên tập tin được để là test.sh:

localhost ~># vi test.shThêm tập lệnh sau vào tập tin test.sh với lưu tập tin:

#!/bin/bashecho "test"echo testecho giangdien.com.vnĐể hoàn toàn có thể chạy tập tin bash bạn có thể chạy bởi 2 giải pháp sau:

Chạy tập tin bash bằng cách sử dụng lệnh bash:

localhost ~># bash test.shtesttestgiangdien.com.vnChạy tập tin bash bằng phương pháp thiết lập quyền thực thi so với tập tin bash với chạy tập tin:

localhost ~># ./test.shtesttestgiangdien.com.vnVí dụ 1: áp dụng chú thích trong bash shell hình tượng # được áp dụng để thêm chú giải dòng đơn trong tập lệnh bash. Tạo ra một tập tin mới mang tên comment.sh và thêm tập lệnh sau với nhấn xét mẫu đơn.

localhost ~># vi comment.sh#!/bin/bash# Tinh tong gia tri cua hai so 55 va 75((Tong=55+75))#In ket quaecho Tong la: $TongChạy tập tin với lệnh bash.

localhost ~># bash comment.shTong la: 130Ví dụ 2: chúng ta có thể sử dụng chú thích các dòng trong bash theo nhiều cách khác nhau. Tạo thành một bash mới có tên comments.sh và thêm tập lệnh sau. Ở đây biểu tượng : với " được áp dụng để thêm chú thích các dòng trong bash shell.

localhost ~># vi comments.sh#!/bin/bash: "Vi du sau se tinhgia tri binh phuong cua so 5."((area=5*5))echo Ket qua: $areaChạy tập tin với lệnh bash.

Xem thêm: ChỉNh SửA ẢNh Trên MáY TíNh, Please Wait

localhost ~># ls -ltotal 4-rw-r--r--. 1 root root 66 Jun 13 10:37 folder.shdrwxr-xr-x. 2 root root 6 Jun 13 10:37 test

3.2. Sử dụng cấu trúc điều khiếu nại trong bash shell

Chúng ta hoàn toàn có thể sử dụng cấu trúc điều khiếu nại với một hoặc các điều kiện. Vào đó cấu tạo điều kiện bắt đầu bằng if và ngừng bằng fi.

Một số cú pháp hay được dùng của cấu tạo điều kiện:

Câu lệnh if solo cú pháp như sau:

if conditionthen commandfiCâu lệnh if tiếp nối else:

if conditionthen commandelse anothercommandfiLồng if cùng theo sau đó là else:

if conditionthen commandelif anothercommandelse yetanothercommandfiVí dụ 1: sản xuất file có tên if.sh. Họ gán đổi mới n bằng 20 và triển khai điều kiện so sánh nếu $n bé nhiều hơn 10 in tác dụng ra màn hình số bao gồm một chữ số và trái lại in ra màn hình hiển thị số tất cả hai chữ số:

localhost ~># bash if.shSo teo hai chu soVí dụ 2: áp dụng câu lệnh if với lô ghích AND:

Chúng ta hoàn toàn có thể xác định nhiều điều kiện trong câu lệnh if bằng súc tích AND (&&). Sản xuất một tệp mang tên if_and.sh giá trị của các biến tên người tiêu dùng và mật khẩu sẽ được nhập vào và đối chiếu với username va password trong if. Ví như cả hai quý hiếm khớp nhau thì áp sạc ra sẽ là người tiêu dùng hợp lệ , ví như không, cổng output sẽ là người tiêu dùng không đúng theo lệ .

localhost ~># vi if_and.sh#!/bin/bashecho "Nhap ten nguoi dung:"read usernameecho "Nhap mat khau"read passwordif >; thenecho "Nguoi dung hop le"elseecho "Nguoi dung khong hop le"fiChạy tệp cùng với lệnh bash.

localhost ~># bash if_and.shNhap ten nguoi dung:adminNhap mat khauadminNguoi dung hop leVí dụ 3: thực hiện câu lệnh if với xúc tích và ngắn gọn OR

Tạo một file mang tên if_or.sh và cực hiếm của n sẽ được nhập từ tín đồ dùng. Giả dụ giá trị bằng 150 hoặc 400 thì cổng đầu ra sẽ là chúng ta đã nhập đúng, trái lại thì trả về công dụng bạn nhập sai.

localhost ~># vi if_or.sh#!/bin/bashecho "Nhap gia tri vao:"read nif >thenecho "Ban da nhap dung"elseecho "Ban da nhap sai"fiChạy tệp với lệnh bash.

localhost ~># bash if_or.shNhap gia tri vao:200Ban da nhap saiVí dụ 4: Nếu bạn muốn kiểm tra sự tồn tại của folder trong vị trí hiện tại trước khi triển khai lệnh mkdir thì hoàn toàn có thể sử dụng tùy chọn -d để soát sổ một thư mục ví dụ có tồn tại hay không như sau:

localhost ~># vi folder2.sh#!/bin/bashecho "Nhap ten thu muc can tao: "read nameif thenecho "Ten thu muc da ton tai"else`mkdir $name`echo "Tao thu muc thanh cong"fiChạy tệp bởi lệnh bash.

localhost ~># ls -ltotal 8-rw-r--r--. 1 root root 161 Jun 13 10:42 folder2.shdrwxr-xr-x. 2 root root 6 Jun 13 10:37 testlocalhost ~># ls -ltotal 8-rw-r--r--. 1 root root 161 Jun 13 10:42 folder2.shdrwxr-xr-x. 2 root root 6 Jun 13 10:37 testdrwxr-xr-x. 2 root root 6 Jun 13 10:43 test1

3.2. Sử dụng cấu trúc vòng lặp trong bash shell

Một số cú pháp cấu trúc vòng lặp thường xuyên được sử dụng:

Vòng lặp while

while conditiondo commanddoneVòng lặp until

until conditiondo commanddoneVòng lặp for: lặp lại một danh sách và tiến hành một lệnh cho từng lần lặp

for nhà cửa in listdo commanddoneTrong các vòng lặp, bạn có thể sử dụng các câu lệnh break tốt continue nhằm phá vỡ vòng lặp hoặc chỉ việc bỏ qua bước lặp hiện nay tại.

Ví dụ 1: thực hiện vòng lặp for

Tạo một tệp mang tên for.sh với thêm tập lệnh sau bởi vòng lặp for. Ở đây, vòng lặp for sẽ tái diễn trong 5 lần cùng in toàn bộ các quý hiếm của biến, bộ đếm vào một dòng.

localhost ~># vi for.sh#!/bin/bashfor ((n=5; n>0; n--))doecho -n "$n "doneprintf " "Chạy tệp cùng với lệnh bash.

localhost ~># bash for.sh5 4 3 2 1Ví dụ 2: áp dụng vòng lặp while

Tạo một tệp có tên while.sh cùng thêm tập lệnh sau bằng vòng lặp while. Ở đây, vòng lặp while vẫn in toàn bộ các số từ là 1 đến 5.

localhost ~># vi while.sh#!/bin/sha=1while vày echo $a a=`expr $a + 1`doneChạy tệp với lệnh bash.

localhost ~># bash while.sh12345Ví dụ 3: áp dụng vòng lặp until

Tạo một tệp mang tên until.sh cùng thêm tập lệnh sau bởi vòng lặp until. Ở đây, vòng lặp until đã in tất cả các số tự 10 cho 15.

localhost ~># bash until.sh101112131415

3.3. Kết cấu case trong bash shell

Cấu trúc của case nó được bước đầu bằng case và ngừng bằng esac mang lại phép bọn họ chọn các tuyến khác biệt tùy thuộc vào trong 1 giá trị có cú pháp như sau:

case value in a) command #... ;; b) command #... ;;esacChúng ta yêu cầu thêm một vệt chấm phẩy kép (;;) sau từng trường hợp.

Ví dụ: chế tạo một tệp mới có tên case.sh và thêm tập lệnh sau. Đầu ra của tập lệnh sau sẽ giống cùng với tập lệnh trong ví dụ:

localhost ~># vi case.sh#!/bin/bashecho "Nhap gia tri n:"read ncase $n in10|15)echo "Ban doan dung so n thu nhat" ;;119)echo "Ban doan dung so n thu hai" ;;389)echo "Ban doan dung so n thu ba" ;;*)echo "Thu lai lan tiep theo" ;;esacChạy tệp cùng với lệnh bash.

localhost ~># bash case.shNhap gia tri n:399Thu lai lan tiep theo

3.4. Cú pháp chắt lọc trong bash shell

Cấu trúc select đã hiển thị cho tất cả những người dùng một menu các lựa chọn để tín đồ dùng hoàn toàn có thể lựa chọn:

select thành quả in listdo commanddoneVí dụ: tạo tập tin select.sh với tạo các tùy chọn như sau:

localhost ~># vi e.sh#!/bin/bashselect n in "di bien" "an uong" "di nui" "xem phim" "the thao"do if ; then echo "Ban tốt chon mot"; else break fidoneecho "So thich cua ban $n"localhost ~># bash e.sh1) di bien2) an uong3) di nui4) xem phim5) the thao#? 5So thich cua ban the thao

3.5. Thao tác làm việc với những chuỗi

Cho một chuỗi:

strings="giangdien.com.vn"Chúng ta rất có thể lấy chiều nhiều năm của chuỗi bằng phương pháp sử dụng $#strings. Luôn luôn sử dụng lốt ngoặc kép quanh các chuỗi, khi chúng ta làm việc với nó nhằm tránh bash diễn giải các ký tự đặc biệt bên trong chúng.

Ngoài ra chúng ta cũng có thể so sánh 2 chuỗi bằng cách sử dụng toán tử = hoặc ==:

"$strings" = "$anotherstrings""$strings" == "$anotherstrings"

Bạn cũng rất có thể kiểm tra sự không giống nhau giữa nhì chuỗi:

"$strings" != "$anotherstrings"

Ví dụ: phối kết hợp các thay đổi chuỗi trong bash. Chế tạo một tập tin có tên string.sh cùng thêm đoạn mã sau để có thể kết hợp các biến chuỗi vào bash sử dụng toán tử + hoặc in những biến với nhau như sau:

localhost ~># vi string.sh#!/bin/bashstring1="Centos"string2="7"echo "$string1$string2"string3=$string1+$string2string3+=" giangdien.com.vn"echo $string3Chạy tệp với lệnh bash.

localhost ~># bash string.shCentos7Centos+7 giangdien.com.vn

3.6. Thực hiện mảng

Mảng là một trong những danh sách những mục, được khai báo bên trong dấu ngoặc đối kháng như sau:

a=("di bien" "an uong" "di nui" "xem phim" "the thao")Bạn hoàn toàn có thể tham chiếu bất kỳ mục làm sao trong một mảng bằng dấu ngoặc vuông:

aaBạn có thể nhận được toàn bô mục trong một mảng bằng cú pháp này:

$#a>

3.7. Sử dụng function

Cũng giống như javascript hay ngôn ngữ lập trình làm sao khác, bạn cũng có thể tạo ra những đoạn mã nhỏ tuổi để hoàn toàn có thể sử dụng lại khi buộc phải thiết, bằng phương pháp đặt tên cho chúng và gọi chúng lúc cần.

Cú pháp của một hàm như sau:

function name Trong đó name là tên chúng ta cần đặt mang đến hàm, và là tên để chúng ta gọi khi phải thiết.

Ví dụ 1: chế tác một hàm đơn giản và dễ dàng và gọi hàm được hiển thị trong khúc script sau. Sản xuất một tập tin mang tên function.sh với thêm đoạn mã sau. Chúng ta cũng có thể gọi bất kỳ chức năng nào bằng tên mà lại không sử dụng bất kỳ dấu ngoặc như thế nào trong tập lệnh bash.

localhost ~># vi function.sh#!/bin/bashfunction test1()echo "Toi rat thich giangdien.com.vn"test1Chạy tệp với lệnh bash.

Xem thêm: Php Và Lập Trình Hướng Đối Tượng, Lập Trình Hướng Đối Tượng (Oop) Trong Php

localhost ~># bash function.shToi rat thich giangdien.com.vnVí dụ 2: Bash cấp thiết khai báo thông số tại thời khắc khai báo hàm. Nhưng bạn có thể sử dụng những tham số vào hàm bằng cách sử dụng biến hóa khác. Sản xuất một tập tin có tên function.sh cùng thêm đoạn mã sau tính diện tích hình chữ nhật:

localhost ~># bash function_parameter.shDien tich la : 6004. Lời kếtQua bài trên, góp cho họ biết biện pháp sử dụng lập trình bash shell trên hệ điều hành quản lý Linux. Qua những ví dụ cơ phiên bản bên bên trên giúp bọn họ có viết các script phục vụ công việc hằng ngày của bọn họ một cách tiện lợi nhất.