Unix/Linux Shell Script - Parameters

Trong bài này bạn sẽ được học cách xử lý tham số đầu vào của một chương trình shell. Nếu bạn từng học qua lập trình thì sẽ biết với mỗi hàm sẽ có các tham số truyền vào, điều này tương đương mỗi chương trình shell có thể xem như là một hàm, và nó sẽ có tham số truyền vào.

Ví dụ khi bạn viết chương trình di chuyển file nhanh từ folder /etc sang folder /usr thì sẽ cần hai tham số đó là tên file cần di chuyển và tên mới. Ok trước tiên mình sẽ giới thiệu hàm read dùng để lấy thông tin từ bàn phím.

1. Hàm read lấy thông tin từ bàn phím

Để lấy thông tin mà người dùng nhập từ bàn phím thì bạn sử dụng hàm read.

read variable

Ví dụ:

var "Nhap ten cua ban"
read name
echo $name

2. Nhận tham số parameters trong shell

Để truyền một giá trị vào shell thông qua dòng lệnh command thì ta sẽ sử dụng tham số, cú pháp như sau:

sh sh_file_name.sh param1 param2 param3

Khi truyền vào thì thứ tự của tham số lần lượt là $1 $2 $3, ví dụ.

read.sh
echo $1
echo $2
echo $3

Bây giờ bạn hãy chạy lệnh sau: sh read.sh freetuts cuong thehalfheart thì kết quả sẽ như hình sau:

Như vậy các tham số sẽ cách nhau bằng khoảng trắng. Vậy nếu muốn truyền một chuỗi thông báo thì sao? Bạn sẽ đặt nó trong cặp nháy đơn để shell biết đó là một chuỗi, nếu không nó sẽ tách ra thành nhiều tham số.

Ví dụ
sh read.sh "Nguyen van Cuong" "thehalfheart" "freetuts.net"

3. Ví dụ viết shell script di chuyển file

Giả sử mình đang ở thư mục /usr/local/bin, bây giờ mình muốn viết shell script di chuyển một file ở thư mục này sang thư mục /temp thì làm như sau:

# Move file
mv /usr/local/bin/$1 /tmp/$2

Giả sử muốn di chuyển file freetuts và đặt tên mới là freetutsdotnet thì chạy command như sau:

sh move_file.sh freetuts freetutsdotnet

4. Lời kết

Như vậy là mình đã hướng dẫn bạn cách tiếp nhận tham số parameter trong shell script, bày này khá đơn giản, mục đích là giúp bạn biết cách lấy giá trị tham số truyền vào khi làm việc với shell script.

-------------------#####-------------------

Series có tham khảo một số nguồn như tutorialspoint. Vì mình không muốn cài máy ảo nên sử dụng trực tiếp trên VPS luôn, và VPS mình sử dụng Ubuntu.

Nguồn: freetuts.net

KHÓA HỌC ĐANG GIẢM GIÁ

UNICA - Sáng tạo hiệu ứng Flash Fx

(Giảng viên: )

XEM
UNICA - Dynamic English Pronunciation

(Giảng viên: )

XEM
KYNA - English for Beginners

(Giảng viên: ULearning)

XEM