Lệnh Case .. esac trong Shell Script

Bài viết này sẽ hướng dẫn cách sử dụng cú pháp Case esac trong shell script, cùng với các ví dụ minh họa rõ ràng để giúp bạn hiểu rõ và áp dụng lệnh này.

Xem thêm:

Logging trong Shell Script

Các debug code Shell Script trên Linux

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

Câu lệnh case là một cách để so sánh một biến với nhiều giá trị khác nhau và thực hiện các lệnh tương ứng với giá trị khớp.

Nó thường được sử dụng thay thế cho câu lệnh if-else lồng nhau khi bạn cần so sánh một biến với nhiều giá trị.

Cú pháp của câu lệnh case bao gồm:

  • Từ khóa case, theo sau là biến cần kiểm tra và từ khóa in.
  • Danh sách các mẫu (pattern) để so sánh với biến, mỗi mẫu kết thúc bằng dấu ngoặc đơn ).
  • Các lệnh cần thực hiện nếu mẫu khớp, kết thúc bằng dấu chấm phẩy kép ;;.
  • Từ khóa esac để kết thúc câu lệnh case. esac
case $bien in
    mau1)
        # Các lệnh nếu $bien khớp với mau1
        ;;
    mau2)
        # Các lệnh nếu $bien khớp với mau2
        ;;
    *)
        # Các lệnh nếu $bien không khớp với bất kỳ mẫu nào ở trên
        ;;
esac

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

Ví dụ 1:

case "$1" in
    start)
        /usr/sbin/sshd 
        ;;
    stop)
        kill $(cat /var/run/sshd.pid)
        ;;
    *)
        echo "Usage: $0 {start|stop}"; exit 1
        ;;
esac

Giải thích:

  • Nếu chạy script với tham số start, nó sẽ khởi động dịch vụ SSH daemon.
  • Nếu chạy với tham số stop, nó sẽ dừng dịch vụ SSH daemon.
  • Nếu tham số không hợp lệ, nó sẽ hiển thị thông báo hướng dẫn cách sử dụng.

Ví dụ 2:

read -p "Enter y or n: " ANSWER
case "$ANSWER" in
 [yY] | [yY] [eE] [sS])
  echo "Your answered yes."
  ;;
 [nN] | [nN] [oO]
  echo "Your answered no."
  ;;
 *)
  echo "Invalid answered."
  ;;

esac

Ví dụ 3:

#!/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

Ví dụ 4:

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

Qua bài viết này, biết cách sử dụng lệnh Case .. esac Shell Script. Nhờ vào tính linh hoạt và dễ sử dụng, lệnh này giúp bạn kiểm soát các luồng điều kiện phức tạp trong script, tiết kiệm thời gian và tối ưu hóa quy trình làm việc. Cảm ơn bạn đã tham khảo trên ttnguyen.net.

Bài viết liên quan:

Vòng lặp trong Shell Script

Mảng trong Shell Script

Hàm trong Shell Script

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em