Một vài điều thú vị với bash script

Tram Ho

Sau một hồi nghịch ngợm tìm hiểu về bash script hôm nay mình có tổng hợp lại một số hàm có thể hay gặp khi sử dụng bash script. MÌnh xin phép được bỏ qua một số những định nghĩa cơ bản và tập trung nhiều hơn vào việc thực hành

Khai báo biến trong bash script

Khai báo biến local

Chắc hẳn chúng ta đều đã quen thuộc với cách khai báo một biến trong bash như sau

Kết quả:

Biến này sẽ được sử dụng xuyên suốt trong script. Dù ở trong function vẫn có thể sử dụng được hoặc khai báo trong function và ở ngoài vẫn có thể dụng được.

Tuy nhiên trong 1 số trường hợp nếu muốn giới hạn lại phạm vi sử dụng của biến chỉ trong functions thôi chúng ta có thể sử dụng biến local như sau:

Kết quả:

Lấy giá trị của biến từ string

Kết quả

Ngoài ra có thể thực hiện gán giá trị vào một biến khác như sau

Kết quả

Một số hàm hay sử dụng với String

Thay thế string

Kết quả

Cut string

Kết quả

Sử dụng array trong bash script

Duyệt qua tất cả các phần tử của mảng

Kết quả

Merge 2 mảng

Kết quả

Thêm phần tử vào mảng

Thêm phần tử vào đầu của mảng

Kết quả

Thêm phần tử vào cuối của mảng

Kết quả

Thêm phần tử vào vị trí xác định của mảng

Để làm việc này cần phải làm theo 3 bước như sau

  1. Lấy tất cả các element trước vị trí index “x”
  2. Thêm một element vào mảngAdd an element to the array
  3. Lấy tất cả các element từ vị trí index “x” trở về sau,

Ví dụ như format bên dưới: Thêm element 4 vào vị trị index = 2 của mảng

Kết quả

Xóa phần tử ra khỏi mảng

Chúng ta sẽ cần thực hiện 2 bước sau

  1. Lấy tất cả các element trước vị trí index “x”
  2. Lấy tất cả các element từ vị trí index “x” + “n” trở về sau

Ví dụ như format bên dưới: Xóa element khỏi vị trí index = 2 của mảng

Kết quả

Ngoài ra có thể sử dụng cách khác khi sử dụng hàm unset như sau

Kết quả

Một cách khác khi bạn biết chính xác được giá trị của element trong mảng bạn có thể sử dụng cách thay thế tương tự như việc thay thế string theo format.

Ở đây chỉ cần sử dụng 1 dấu / là đủ thay thế tất cả các giá trị map

Kết quả

Làm việc với file

Giả sử chúng ta có một file tên text.txt với nội dung như sau:

Đọc tất cả các dòng trong một file

Kết quả

Chỉnh sửa file

Thêm vào đầu file

Kết quả

Với cách này chúng ta sẽ thực hiện bằng cách tạo ra file với đuôi .tmp sau đó thực hiện lệnh mv để tổi file tmp thành tên file ban đầu

Thêm vào một line bất kỳ của file

Chúng ta có thể sử dụng bằng lệnh sed với format <line>i<PATTERN>.

Ví dụ dưới đây chúng ta sẽ thêm vào dòng số 1 của file với nội dung là “Line number 0”. Lưu ý ở đây rằng <line> phải nhỏ hơn hoặc bằng số dòng trong file

Kết quả

Thêm vào cuối file

Kết quả

Lưu ý ở đây nếu chúng ta chỉ sử dụng 1 dấu > thì điều có nghĩa là sẽ tạo ra file mới ví dụ như sau

Kết quả

Thay thế một text gặp trong file

Chúng ta sẽ tiếp tục sử dụng với lệnh sed với format như sau

Ví dụ chúng ta sẽ thực hiện thay thế từ “Line” thành “This is line”

Kết quả

Đọc file yaml từ bash script

Sau một hồi tìm hiểu thì may mắn tìm được một link github viết về hàm khá đẩy đủ để đọc được file yaml với nội dung như sau:

Hàm parse_yaml cần 2 giá trị input là tên file và giá trị prefix. Hàm create_variables là để khai báo các biến sau khi đã parse các key trong file ra. Như ở ví dụ dưới đây chúng ta có file database.yml và prefix là config_

Chúng ta sẽ thực hiện lệnh sau

Kết quả

Các bạn có thể sử dụng file mẫu để thử các case các.

Trên đây là một số hàm mình mới tìm hiểu được. Cảm ơn các bạn đã theo dõi.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo