Trong bash, tôi biết rằng có thể viết một for
vòng lặp trong đó một số biến điều khiển vòng i
lặp lặp qua các số nguyên được chỉ định. Ví dụ: tôi có thể viết tập lệnh bash shell in các số nguyên trong khoảng từ 1 đến 10:
#!/bin/bash
for i in {1..10}
do
echo $i
done
Thay vào đó có thể lặp lại một biến điều khiển vòng lặp là một chuỗi không, nếu tôi cung cấp một danh sách các chuỗi? Ví dụ: giả sử tôi có một chuỗi fname
đại diện cho tên tệp. Tôi muốn gọi một nhóm lệnh cho mỗi tên tệp. Ví dụ: tôi có thể muốn in nội dung fname
sử dụng lệnh như thế này:
#!/bin/bash
for fname in {"a.txt", "b.txt", "c.txt"}
do
echo $fname
done
Nói cách khác, ở lần lặp thứ nhất, fname
nên có giá trị fname="a.txt"
, trong khi ở lần lặp thứ hai, fname
nên có giá trị fname="b.txt"
, v.v. Thật không may, có vẻ như cú pháp trên không hoàn toàn chính xác. Tôi muốn có được đầu ra:
a.txt
b.txt
c.txt
nhưng khi tôi thử đoạn mã trên, tôi nhận được kết quả đầu ra này:
{a.txt,
b.txt,
c.txt}
Bạn có thể vui lòng giúp tôi xác định cú pháp chính xác để tôi có thể thay đổi giá trị / nội dung của biến fname
không? Cảm ơn bạn đã dành thời gian.
{}
và các ,
s. Thay thế là để loại bỏ các không gian. Vì vậy, "a.txt" "b.txt" "c.txt"
hoặc {"a.txt","b.txt","c.txt"}
. Nhưng tôi thích {a..c}.txt
thay thế.
{}
, bạn không cần bất cứ điều gì để lặp qua danh sách (được phân cách bằng dấu cách)