Phạm vi Bash: Cách lặp lại các chuỗi được tạo trên shell

Bash Range How Iterate Over Sequences Generated Shell



Bạn có thể lặp lại chuỗi số trong bash bằng hai cách. Một là bằng cách sử dụng seq và một lệnh khác là chỉ định phạm vi trong vòng lặp for. Trong seq lệnh, trình tự bắt đầu từ một, số tăng dần trong mỗi bước và in từng số trong mỗi dòng lên đến giới hạn trên theo mặc định. Nếu con số bắt đầu từ giới hạn trên thì nó sẽ giảm một trong mỗi bước. Thông thường, tất cả các số được hiểu là dấu phẩy động nhưng nếu chuỗi bắt đầu từ số nguyên thì danh sách các số nguyên thập phân sẽ được in ra. Nếu lệnh seq có thể thực thi thành công thì nó trả về 0, ngược lại nó trả về bất kỳ số nào khác không. Bạn cũng có thể lặp lại chuỗi số bằng vòng lặp for với phạm vi. Cả hai seq lệnh và vòng lặp for với phạm vi được hiển thị trong hướng dẫn này bằng cách sử dụng các ví dụ.

Các tùy chọn của lệnh seq:

Bạn có thể dùng seq lệnh bằng cách sử dụng các tùy chọn sau.







-trong

Tùy chọn này được sử dụng để đệm các số có số 0 ở đầu để in tất cả các số có chiều rộng bằng nhau.



-f định dạng

Tùy chọn này được sử dụng để in số với định dạng cụ thể. Số động có thể được định dạng bằng cách sử dụng% f,% g và% e làm ký tự chuyển đổi. % g được sử dụng làm mặc định.



chuỗi -s

Tùy chọn này được sử dụng để phân tách các số bằng chuỗi. Giá trị mặc định là dòng mới (‘ n’).





Ví dụ về lệnh seq:

Bạn có thể áp dụng lệnh seq bằng ba cách. Bạn chỉ có thể sử dụng giới hạn trên hoặc giới hạn trên và dưới hoặc giới hạn trên và dưới với giá trị tăng hoặc giảm của mỗi bước. Các cách sử dụng khác nhau của lệnh seq với các tùy chọn được hiển thị trong các ví dụ sau.

Ví dụ-1: lệnh seq không có tùy chọn

Khi chỉ sử dụng giới hạn trên thì số sẽ bắt đầu từ 1 và tăng dần từng bước. Lệnh sau sẽ in số từ 1 đến 4.



$seq 4

Đầu ra:

Khi hai giá trị được sử dụng với lệnh seq thì giá trị đầu tiên sẽ được sử dụng làm số bắt đầu và giá trị thứ hai sẽ được sử dụng làm số kết thúc. Lệnh sau sẽ in số từ 7 đến 15.

$seq 7 mười lăm

Đầu ra:

Khi bạn sẽ sử dụng ba giá trị với lệnh seq thì giá trị thứ hai sẽ được sử dụng làm giá trị tăng hoặc giảm cho mỗi bước. Đối với lệnh sau, số bắt đầu là 10, số kết thúc là 1 và mỗi bước sẽ được đếm bằng cách giảm dần 2.

$seq 10 -2 1

Đầu ra:

Ví dụ-2: tùy chọn seq với –w

Lệnh sau sẽ in kết quả bằng cách thêm số 0 ở đầu cho số từ 1 đến 9.

$seq -trong0110

Đầu ra:

Ví dụ-3: tùy chọn seq với –s

Lệnh sau sử dụng - làm dấu phân cách cho mỗi số thứ tự. Dãy số sẽ in ra bằng cách thêm - làm dấu phân cách.

$seq -NS-số 8

Đầu ra:

Ví dụ-4: tùy chọn seq với -f

Lệnh sau sẽ in 10 giá trị ngày tháng bắt đầu từ 1. Ở đây, tùy chọn% g được sử dụng để thêm số thứ tự với giá trị chuỗi khác.

$seq -NS '% g / 04/2018' 10

đầu ra:

Dải Bash

Lệnh sau được sử dụng để tạo chuỗi số dấu phẩy động bằng cách sử dụng% f. Ở đây, số sẽ bắt đầu từ 3 và tăng dần 0,8 trong mỗi bước và số cuối cùng sẽ nhỏ hơn hoặc bằng 6.

$seq -NS '%NS' 3 0,8 6

Đầu ra:

Ví dụ-5: Viết trình tự trong một tệp

Nếu bạn muốn lưu chuỗi số vào một tệp mà không in trong bảng điều khiển thì bạn có thể sử dụng các lệnh sau. Lệnh đầu tiên sẽ in các số vào một tệp có tên seq.txt . Con số sẽ tạo ra từ 5 đến 20 và tăng lên 10 trong mỗi bước. Lệnh thứ hai được sử dụng để xem nội dung của seq.txt tập tin.

$ seq 5 10 20 | cat> seq.txt
$ cat seq.txt

Đầu ra:

Ví dụ-6: Sử dụng seq trong vòng lặp for

Giả sử, bạn muốn tạo các tệp có tên fn1 đến fn10 bằng vòng lặp for với seq. Tạo một tệp có tên sq1.bash và thêm mã sau. Vòng lặp For sẽ lặp lại 10 lần bằng lệnh seq và tạo 10 tệp theo trình tự fn1, fn2, fn3… ..fn10.

#! / bin / bash
tôitrong ``seq 10``
làm
chạm vàofn.$ i
xong

Đầu ra:

Chạy các lệnh sau để thực thi mã của tệp bash và kiểm tra tệp có được tạo hay không.

$bấu víusq1.bash
$ls

Ví dụ về vòng lặp for với phạm vi:

Ví dụ-7: Vòng lặp for với dải ô

Sự thay thế của lệnh seq là phạm vi. Bạn có thể sử dụng dải ô trong vòng lặp for để tạo chuỗi số như seq. Viết mã sau vào một tệp bash có tên sq2.bash . Vòng lặp sẽ lặp lại 5 lần và in ra căn bậc hai của mỗi số trong mỗi bước.

#! / bin / bash
ntrong {1..5}
làm
((kết quả= n*n))
quăng đi $ n Quảng trường=$ kết quả
xong

Đầu ra:

Chạy lệnh để thực thi tập lệnh của tệp.

$bấu víusq2.bash

Ví dụ-8: Vòng lặp for với phạm vi và giá trị tăng dần

Theo mặc định, số sẽ tăng lên từng bước trong phạm vi như seq. Bạn cũng có thể thay đổi giá trị gia tăng trong phạm vi. Viết mã sau vào một tệp bash có tên sq3.bash . Vòng lặp for trong tập lệnh sẽ lặp lại 5 lần, mỗi bước được tăng thêm 2 và in ra tất cả các số lẻ từ 1 đến 10.

#! / bin / bash
quăng đi 'tất cả các số lẻ từ 1 đến 10 đều là'
tôitrong {1..10..2}
làm
quăng đi $ i;
xong

Đầu ra:

Chạy lệnh để thực thi tập lệnh của tệp.

$bấu víusq3.bash

Nếu bạn muốn làm việc với dãy số thì bạn có thể sử dụng bất kỳ tùy chọn nào được hiển thị trong hướng dẫn này. Sau khi hoàn thành hướng dẫn này, bạn sẽ có thể sử dụng lệnh seq và vòng lặp for với phạm vi hiệu quả hơn trong tập lệnh bash của mình.