Thứ Sáu, 28 tháng 7, 2023

Lệnh Case .. esac trong Shell Script

Trong bài này chúng ta sẽ tìm hiểu lệnh case .. esac trong shell script, đây là lệnh rẻ nhánh có công dụng như lệnh if else.

Nếu bạn đã từng học một ngôn ngữ lập trình bất kì thì sẽ thấy đây chính là lệnh switch case, chỉ là cú pháp trong shell script có khác biệt hơn mà thôi.

Mục lục

  • 1. Cú pháp lệnh case .. esac trong shell script
  • 2. Ví dụ lệnh case .. esac trong shell script

1. Cú pháp lệnh case .. esac trong shell script

Thực tế bạn có thể sử dụng lệnh if else để xử lý theo nhiều luồng khác nhau, tuy nhiên không phải lúc nào nó cũng tốt, nhất là trường hợp tất cả các luồng đều phụ thuộc vào một giá trị. Và trong trường hợp này bạn nên sử dụng lệnh case .. esac.

Cú pháp:

Bài viết này được đăng tại [tranvanbinh.vn]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
case word in
   pattern1)
      Statement(s)
      ;;
   pattern2)
      Statement(s)
      ;;
   pattern3)
      Statement(s)
      ;;
   *)
     Default
     ;;
esac

Trong đó:

  • word chính là giá trị mà bạn muốn dùng để rẻ nhánh chương trình thành nhiều luồng.
  • pattern1), pattern2), ... chính là các nhánh cho mỗi trường hợp,
  • Default sẽ được chạy nếu không có nhánh nào ở trên phù hợp.

2. Ví dụ lệnh case .. esac trong shell script

Bây giờ ta sẽ làm một vài ví dụ đơn giản nhất để bạn hiểu hơn về lệnh này nhé.

Ví dụ 1: In ra màn hình thông tin của trái cây

1
2
3
4
5
6
7
8
9
10
11
12
13
Live Demo
#!/bin/sh
 
FRUIT="kiwi"
 
case "$FRUIT" in
   "apple") echo "An tao rat ngon."
   ;;
   "banana") echo "Chuoi nhieu chat dinh duong."
   ;;
   "kiwi") echo "Kiwi noi tieng o New Zealand"
   ;;
esac

Cú pháp nó hơi rườm rà so với những ngôn ngữ lập trình như C, C++, PHP.

Khi chạy chương trình trên bạn sẽ thu được kết quả là "Kiwi noi tieng o New Zealand" bởi biến FRUIT = "kiwi".

Ví dụ 2: Viết chương trình đọc thông tin của file dựa vào tham số truyền vào của người dùng.

Bạn hãy tạo một file test.sh với nội dung như sau.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/sh
 
option="${1}"
case ${option} in
   -f) FILE="${2}"
      echo "File name is $FILE"
      ;;
   -d) DIR="${2}"
      echo "Dir name is $DIR"
      ;;
   *) 
      echo "`basename ${0}`:usage: [-f file] | [-d directory]"
      exit 1 # Command to come out of the program with status 1
      ;;
esac

Ví dụ này sẽ trả về thông tin của file như:

  • Hiển thị file name nếu tham số là -f
  • Hiển thị tên thư mục nếu tham số là -d
  • Hiển thị thông báo nếu không có tham số

Dưới đây là một vài đoạn test chạy thực tế.

1
2
3
4
5
6
7
8
9
$./test.sh
test.sh: usage: [ -f filename ] | [ -d directory ]
$ ./test.sh -f index.htm
$ vi test.sh
$ ./test.sh -f index.htm
File name is index.htm
$ ./test.sh -d unix
Dir name is unix
$

Trên là thông tin cơ bản về cách sử dụng lệnh case .. esac trong shell script. Nếu trong các ngôn ngữ lập trình như PHP, C, C++ ít sử dụng thì trong shell script lại sử dụng rất nhiều đấy nhé

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master