Đọc file trong Bash
Có nhiều cách để đọc một file trong Bash Shell Scripting. Dưới đây là một số phương pháp quan trọng (giả sử tên file mà chúng ta đang đọc là ‘read_file.txt’):
Đọc file sử dụng ‘cat fileName’
Chúng ta có thể sử dụng cú pháp sau để in nội dung của file lên terminal.
value=`cat file_name`
Ví dụ
#!/bin/bash
value=`cat read_file.txt`
echo "$value"
Kết quả
Đọc file sử dụng ‘$(<fileName>)’
Sau đây là cú pháp để đọc nội dung của file bằng cách sử dụng ‘$’
value=$(file_name)
Ví dụ
#!/bin/bash
value=$(<read_file.txt)
echo "$value"
Kết quả
Đọc nội dung file từ Command-line Nếu chúng ta muốn đọc file từng dòng một từ Command-line mà không sử dụng lệnh ‘cat’, chúng ta có thể chạy lệnh sau để thực hiện công việc:
while read line; do Command; done < input.file
Kết quả
Ở đây, vòng lặp while sẽ đọc từng dòng của file và lưu nội dung của dòng vào biến $line, sau đó sẽ được in ra sau đó.
Để đọc nội dung của file sử dụng script, chúng ta cần tạo một file bash và thêm mã sau:
#!/bin/bash
file='read_file.txt'
i=1
while read line; do
#Reading each line
echo "Line No. $i : $line"
i=$((i+1))
done < $file
Kết quả
Ở đây, một tên file hiện có được lưu trữ trong biến $file, và biến $i được sử dụng để giữ giá trị của số dòng của dòng đó.
Truyền tên file từ dòng lệnh và đọc file
Tạo một tập tin bash và thêm đoạn mã sau đây, sẽ truyền tên file từ dòng lệnh và đọc file từng dòng một. Giá trị đối số đầu tiên được đọc bởi biến $1, nó sẽ bao gồm tên file để đọc. Nếu file có sẵn ở vị trí được chỉ định thì vòng lặp while sẽ đọc file từng dòng một và in nội dung file.
#!/bin/bash
file=$1
while read line; do
#Readind each line in sequence
echo $line
done <read_file.txt
Kết quả
Ở đây, tên file được sử dụng làm giá trị đối số. Đầu ra sẽ cung cấp nội dung của ‘read_file.txt’ mà không có khoảng trắng thừa giữa các từ.
Đọc file bằng cách bỏ qua Backslash Escape
Nếu chúng ta muốn đọc từng dòng của một file bằng cách bỏ qua backslash-escape thì chúng ta cần sử dụng tùy chọn ‘-r’ với lệnh ‘read’ trong vòng lặp ‘while’, ví dụ:
#!/bin/bash
while read -r line; do
#Reading each line by omitting backslash escape
echo $line
done < read_file.txt
Kết quả
Chúng ta có thể cần đọc file cho mục đích lập trình. Ví dụ, chúng ta có thể tìm kiếm hoặc so khớp bất kỳ nội dung cụ thể nào từ file từng dòng một. Do đó, điều này là một tác vụ hữu ích cho bất kỳ ngôn ngữ lập trình nào.