Những điều Cần Biết Về Lập Trình Shell Trong Linux Mới Nhất 2020

Những điều cần biết về lập trình shell trong linux mới nhất 2020

Xếp hạng bài viết này

Lập trình shell trong linux là một trong những từ khóa được search nhiều nhất về chủ đề lập trình shell trong linux trong bài viết này, lamweb.vn sẽ viết bài Những điều cần biết về lập trình shell trong linux mới nhất 2020

Những điều Cần Biết Về Lập Trình Shell Trong Linux Mới Nhất 2020

Những điều cần biết về lập trình shell trong linux mới nhất 2020

I. Shell script là gì

Shell là chương trình giao tiếp với người dùng. Có nghĩa là shell chấp nhận các lệnh từ bạn (keyboard) và thực thi nó. Nhưng nếu bạn mong muốn dùng nhiều lệnh chỉ bằng một lệnh, thì bạn có thể lưu chuỗi lệnh vào text file và bảo shell thực thi text file này thay vì nhập vào các lệnh. Điều này gọi là shell script.

Định nghĩa: Shell script là một chuỗi các lệnh được viết trong plain text file. Shell script thì như batch file trong MS-DOS nhưng mạnh hơn.

vì sao phải viết shell script:

• Shell script đủ nội lực nhận input từ người dùng, file hoặc output từ màn hình.

• tiện lợi để tạo nhóm lệnh riêng.

• cắt giảm thời gian.

• auto sử dụng một vài công việc liên tục.

II. Hướng dẫn tạo và thực thi chương trình shell

step1: Tạo file hello.sh (trong thư mục cd /home/tuanvh/) content như sau:

dùng vi, emacs, gedit… Để biên soạn thảo nội dung

#!/bin/bash
echo "hello world"

thể loại trước tiên chúng ta luôn đặt #!/bin/bash, đây là cú pháp bắt buộc. Sau # được hiểu là comment, chú thích của các đoạn mã.

step2: Sau đó, để script có thể thực thi ta phải cấp quyền cho nó

chmod 0777 hello.sh

step3: Thực thi file shell.

// đủ sức chạy file bằng 1 số phương pháp sau
–  bash hello.sh
–  sh hello.sh
–  ./hello.sh

III. Biến trong shell

Trong Linux shell có 2 loại biến:

Biến nền tảng :

  • tạo ra và cai quản bởi Linux.
  • Tên biến là CHỮ HOA

Biến do người dùng khái niệm

-Tạo ra và quản lý bởi user -Tên biến là chữ thường

1. Một số biến nền tảng

VD: file hello.sh

#!/bin/bash
echo "hello"
echo $BASH_VERSION
echo $BASH
echo $HOME
echo $PATH

Kết quả: run ./hello.sh

hello
4.2.24(1)-release
/bin/bash
/home/vu.huy.tuan
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

2. Biến user, cú pháp, quy tắc đặt tên

cú pháp:

tên_biến=value
  • tên_biến phải khởi đầu bằng ký tự
  • k có dấu phương pháp 2 bên toán tử = khi gán giá trị cho biến
#Đúnga=1#saia = 1#saia= 1
  • Tên biến có phân biệt chữ hoa, thường
#các biến sau đây là khác nhaua=1
A=2
  • Một biến không có giá trị khởi tạo thì bằng NULL
  • k được sử dụng dấu ?, * để đặt tên các biến

ECHO Để in giá trị của biến

Cú pháp:

echo[option][string,variables…]#exampleecho $tên_biến
  • In một số ký tự đặc biệt trong tham số với tùy lựa chọn -e:
\a	alert	(bell)
\b	backspace
\c	suppress trailing new	line
\n	new	line
\r	carriage return\t	horizontal tab
\\	backslash//example
$ echo-e "Hello\tTuan"#output:  Hello   Tuan$ echo-e "Hello\nTuan"#outputHello
Tuan

IV: Các phép toán số học

Shell cung cấp cho ta một số biểu thức toán học.

Cú pháp:

expr toán_hạng_1 toán_tử toán_hạng_2

example:

# phép cộng$expr 1 + 2# phép trừ$expr 5 - 1# phép chia$expr 8 / 3# output =2 phép chia chỉ get phần nguyên$expr 8 phần trăm 5# output =3 phép chia quét phần dư$expr 10 \* 2 # output = 20 phép nhân

Chú ý: cần có dấu cách trước và sau toán tử.

# example sai cú pháp$expr 1+2
$expr 5- 1

Các dấu ngoặc

  • toàn bộ các ký tự trong dấu ngoặc kép đều k có ý nghĩa ñnh toán, trừ những ký tự sau \ hoặc $
  • Dấu nháy ngược (`): nghĩa là yêu cầu thực thi lệnh
#example$ echo"ngay hom nay la: `date`"
#ouput: ngay hom nay la: Wed Apr 27 10:43:59 ICT 2016
$ echo `expr 1 + 2`
#output = 3$echo "expr 1 + 2"#ouput: expr 1 + 2

**Kiểm tra hiện trạng trả về của 1 câu lệnh cú pháp

$echo $?

– hiện trạng 0 nếu câu lệnh chấm dứt thành công. – khác 0 nếu kết thúc có lỗi

# xóa file không tồn tạirm abc.txt #output messge:( rm: cannot remove `abc.txt': No such file or directory )# tra cứu hiện trạng câu lệnh rm abc.txt$echo $? #output 1 nghĩa là có lỗi$ echo "ngay hom nay la: `date`"#ouput: ngay hom nay la: Wed Apr 27 10:43:59 ICT 2016$echo $? #output 0, nghĩa là thành công

V: Cấu trúc điều khiển trong shell script

Cũng giống như các ngôn ngữ lập trình không giống, Shell Scripts cũng phân phối các vòng lặp: “for”, “while”; và lệnh rẽ nhánh “if”, “case”.

1. Cú pháp rẽ nhánh If Cú pháp:

if điều_kiện
then
câu lệnh 1
…
fi

if…else…fi

Cú pháp:

if điều_kiện then
	câu_lệnh_1
….elsecâu_lệnh_2
fi

Vòng lặp For

Cú pháp:

for  tên biến  in  danh sách do# Khối lệnh# Thực hiện từng mục trong mục lục cho đến cho đến hết# (Và lặp lại toàn bộ các lệnh nằm trong "do" và "done")done#hoặc sử dụng forfor (( expr1; expr2; expr3 ))do# Lặp cho đến khi biểu thức expr2 trả về trị giá TRUEdone

example

#  for 1for i in 1 2 3 4 5doecho $i
done#output: 1 2 3 4 5#for 2for (( i = 0 ; i <= 5; i++ )) # bao quanh bằng (())doecho $i
done#ouput 1 2 3 4 5

3. Vòng lặp While

while[Điều kiện]docommand1
command2
command3	..	....
done

example demo1.sh

#!/bin/shecho"Nhap vao cac so can tinh tong, nhap so am de exit"sum=0
read iwhile [ $i -ge 0 ] # nếu i >= 0dosum=`expr $sum + $i`
read i # nhận giá trị từ người dùngdoneecho"Total: $sum."

kết quả sau khi chạy ./demo1.sh

#ouput./demo1.sh
Nhap vao cac so can tinh tong, nhap so am de exit1
5
4-1
Total= 10.

VI: Lệnh kiểm tra

Lệnh test được sử dụng để tra cứu một biểu thức là đúng hay k và trả lại

–  0 nếu biểu thức đúng

–  không giống 0 sai

Cú pháp:

rà soát biểu_thức HOẶC[biểu thức]

Các phép toán test

Mathematical Operator in,Shell ScripMeaningNormal Arithmetical/ Mathematical Statements
For rà soát statement with if commandFor [ expr ] statement with if command
-eqis equal lớn5 == 6if test 5 -eq 6if [ 5 -eq 6 ]
-neis not equal lớn5 != 6if tra cứu 5 -ne 6if [ 5 -ne 6 ]
-ltis less than5 < 6if kiểm tra 5 -lt 6if [ 5 -lt 6 ]
-leis less than or equal lớn5 <= 6if kiểm tra 5 -le 6if [ 5 -le 6 ]
-gtis greater than5 > 6if rà soát 5 -gt 6if [ 5 -gt 6 ]
-geis greater than or equal lớn5 >= 6if kiểm tra 5 -ge 6if [ 5 -ge 6 ]

NOTE: == is equal, != is not equal.

For string Comparisons use

OperatorMeaning
string1 = string2string1 is equal to string2
string1 != string2string1 is NOT equal to string2
string1string1 is NOT NULL or not defined
-n string1string1 is NOT NULL and does exist
-z string1string1 is NULL and does exist

Toán tử logic

OperatorMeaning
! ExpressionLogical NOT
expression1,-a,expression2Logical AND
expression1,-o,expression2Logical OR

rà soát file, thư mục

tra cứuMeaning
-s fileNon empty file
-f fileIs File exist or normal file and not a directory
-d dirIs Directory exist and not a file
-w fileIs writeable file
-r fileIs read-only file
-x fileIs file is executable

Nguồn: https://viblo.asia/

Leave a Comment

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *