Câu trả lời:
Đó là một tính năng của forlệnh ghép, như được mô tả bởi help for:
for: for NAME [in WORDS ... ] ; do COMMANDS; doneThực hiện các lệnh cho mỗi thành viên trong một danh sách.
Các
forvòng lặp thực hiện một chuỗi các lệnh cho mỗi thành viên trong một danh sách các mục. Nếuin WORDS ...;không có mặt, thìin "$@"được giả định. Đối với mỗi phần tử trongWORDS,NAMEđược đặt thành phần tử đó vàCOMMANDSđược thực thi.
Vì vậy, mã bạn trích dẫn có thể được thực thi trong một tập lệnh được gọi với 4 tham số.
for x; do …là một phím tắt cho for x in "$@"; do …: nó lặp qua các tham số vị trí. Nếu nó lặp bốn lần, điều đó có nghĩa là bạn có bốn tham số vị trí ( $1thông qua $4).
set a b c dmột thời gian gần đây. Tôi thường sử dụngsetcách đó trong một kịch bản để kiểm tra .. Sau khi khởi động lại thiết bị đầu cuối, nó đã dừng lại ... (có ý nghĩa ngay bây giờ) ..