Cách xử lý đối số dòng lệnh trong tập lệnh Bash

How Handle Command Line Arguments Bash Script



Trong nhiều trường hợp, tập lệnh bash yêu cầu các giá trị đối số để cung cấp các tùy chọn đầu vào cho tập lệnh. Bạn có thể xử lý các đối số dòng lệnh trong tập lệnh bash bằng hai cách. Một là bằng cách sử dụng biến đối số và một cái khác là bằng cách sử dụng getopts hàm số. Cách bạn có thể xử lý các đối số dòng lệnh được hiển thị trong hướng dẫn này.

Sử dụng các biến đối số:

Biến đối số bắt đầu từ $ 0. Tên tệp kịch bản chính được lưu trữ trong $ 0 nhận các giá trị đối số từ các đối số dòng lệnh. Nếu hai đối số được truyền trong dòng lệnh thì các giá trị đối số sẽ được nhận tuần tự trong các biến $ 1 và $ 2.







Ví dụ -1: Gửi ba giá trị số dưới dạng đối số

Tạo tệp bash và thêm mã sau. Tập lệnh sẽ nhận ba giá trị đối số và lưu trữ trong $ 1, $ 2 và $ 3. Nó sẽ đếm tổng số đối số, in giá trị đối số có vòng lặp và không có vòng lặp. Cuối cùng, in ra tổng của tất cả các giá trị đối số.



#! / bin / bash

# Đếm tổng số đối số
quăng đi 'Tổng số đối số: $ #'

# Đọc các giá trị đối số riêng lẻ
quăng đi 'Giá trị đối số đầu tiên: $ 1'
quăng đi 'Giá trị đối số thứ hai: $ 2'
quăng đi 'Giá trị đối số thứ ba: $ 3'

# Đọc giá trị đối số bằng vòng lặp
argvaltrong '[email được bảo vệ]'
làm
quăng đi -n '$ argval'
xong

# Thêm giá trị đối số
Tổng= $(($ 1+$ 2+$ 3))

# in kết quả
quăng đi -Và ' Kết quả của tổng =$ sum'

Chạy tệp bash với ba giá trị đối số số.



$bấu víucmdline1.shnăm mươi 35 mười lăm





Ví dụ -2: Lấy tên tệp làm đối số

Tạo tệp bash và thêm mã sau để đếm tổng số ký tự của bất kỳ tệp nào. Tại đây, tên tệp sẽ được chuyển làm đối số dòng lệnh.

#! / bin / bash
tên tập tin=$ 1
tổng cộng=``wc -NS $ filename``
quăng đi 'Tổng số ký tự là$ tổng cộng'

Chạy tập lệnh bash với tên tệp là giá trị đối số duy nhất và chạy một lệnh khác để kiểm tra tổng số ký tự của tệp đó. Ở đây, tệp tin worker.txt được sử dụng làm giá trị đối số. Tổng số ký tự của tệp worker.txt là 204 ký tự.



$bấu víucmdline2.sh worker.txt
$wc -NSnhân viên.txt

Sử dụng hàm getopts:

Nếu bạn muốn lưu trữ dữ liệu trong cơ sở dữ liệu hoặc bất kỳ tệp nào hoặc tạo báo cáo theo định dạng cụ thể dựa trên các giá trị đối số dòng lệnh thì getopts chức năng là tùy chọn tốt nhất để thực hiện nhiệm vụ. Nó là một chức năng linux được tích hợp sẵn. Vì vậy, bạn có thể dễ dàng sử dụng chức năng này trong tập lệnh của mình để đọc dữ liệu được định dạng từ dòng lệnh.

Ví dụ -1: Đọc đối số bằng hàm getopts

Tạo tệp bash và thêm tập lệnh sau để hiểu việc sử dụng getopts hàm số. Hàm ‘getopts’ được sử dụng với vòng lặp while để đọc các tùy chọn đối số dòng lệnh và giá trị đối số. Ở đây, 4 tùy chọn được sử dụng là ‘I’, ‘n’, ‘m’'Và' . câu lệnh case được sử dụng để khớp với tùy chọn cụ thể và lưu trữ giá trị đối số trong một biến. Cuối cùng, in các giá trị của biến.

#! / bin / bash
trong khi getopts ':trong tôi:'tức giận;làm
trường hợp $ arg trong
tôi) TÔI=$ OPTARG;;
n) Tên=$ OPTARG;;
NS) Ngày sản xuất=$ OPTARG;;
) Hạn sử dụng=$ OPTARG;;
esac
xong
quăng đi -Và ' $ ID $ Name $ Manufacturing_date $ Expire_date '

Chạy tệp với các tùy chọn và giá trị đối số sau. Ở đây, p100 là giá trị của tùy chọn -i, 'Hot Cake' là giá trị của tùy chọn -n, '01 -01-2018 ′ là giá trị của tùy chọn -m và '06-01-2018 ′ là giá trị của - e tùy chọn.

$bấu víucmdline3.sh-tôip001-n 'Bánh nóng' -NS '01-01-2018 ' -Và '06-01-2018 '

Khi bạn cần gửi các giá trị đơn giản trong một tập lệnh thì tốt hơn là sử dụng các biến đối số. Nhưng nếu bạn muốn gửi dữ liệu theo cách được định dạng thì tốt hơn là sử dụng hàm getopts để lấy các giá trị đối số. Để biết thêm thông tin, hãy xem video !