Bài viết này sẽ hướng dẫn các bạn kiểm tra định dạng ngày tháng trong shell script linux sau đó in ra danh sách ngày tháng đã chọn.
Tạo file script
Ở đây mình dùng định dạng YYYY-MM-DD
Các bạn sử dụng vim hoặc nano tạo file check_date.sh
nano check_date.sh
Nội dung file như sau:
#!/bin/bash startdate=2018-09-01 enddate=2018-09-40 start=$(date '+%Y-%m-%d' -d $startdate) end=$(date '+%Y-%m-%d' -d $enddate) if [[ $end < $start ]] then echo "check start & end date" elif [ $start != $startdate ] then echo "date format invalid" elif [ $end != $enddate ] then echo "date format invalid" else d= n=-1 until [ "$d" = "$enddate" ] do ((n++)) d=$(date -d "$startdate + $n days" +%Y-%m-%d) echo $d done fi
Trong đó:
- startdate: ngày bắt đầu
- enddate: ngày kết thúc
- $end < $start: kiểm tra ngày kết thúc phải lớn hơn ngày bắt đầu
- $start != $startdate: kiểm tra định dạng ngày bắt đầu
- $end != $enddate: kiểm tra định dạng ngày kết thúc
Thực thi
Để thực thi shell script trên chúng ta dùng lệnh sau:
chmod u+x check_date.sh
Thực thi tập tin bằng lệnh sau:
sh check_date.sh
Vì enddate (2018-09-40) bị sai nên console log như sau:
[root@localhost]# sh check_date.sh date: invalid date `2018-09-40' check start & end date
Sửa lại enddate đúng định dạng (ví dụ: 2018-09-11) ta sẽ có console log như sau:
[root@localhost]# sh check_date.sh 2018-09-01 2018-09-02 2018-09-03 2018-09-04 2018-09-05 2018-09-06 2018-09-07 2018-09-08 2018-09-09 2018-09-10 2018-09-11
Chúc các bạn thành công.
Xem thêm các bài viết về hệ điều hành Linux