it-swarm-vi.com

"-" (dấu gạch ngang kép) có nghĩa là gì?

Tôi đã thấy -- Được sử dụng trong lệnh compgen.

Ví dụ:

compgen -W "foo bar baz" -- b

Ý nghĩa của -- Trong đó là gì?

518
dogbane

Chính xác hơn, một dấu gạch ngang kép (--) được sử dụng trong hầu hết các lệnh tích hợp bash và nhiều lệnh khác để biểu thị sự kết thúc của các tùy chọn lệnh, sau đó chỉ các tham số vị trí được chấp nhận.

Ví dụ sử dụng: giả sử bạn muốn grep một tệp cho chuỗi -v - bình thường -v sẽ được coi là tùy chọn để đảo ngược ý nghĩa khớp (chỉ hiển thị các dòng không khớp), nhưng với -- bạn có thể grep cho chuỗi -v như thế này:

grep -- -v file
631
Guss

Trong man bash chúng ta có thể đọc trong phần Lệnh Shell dựng sẵn :

Trừ khi có ghi chú khác, mỗi lệnh dựng sẵn được ghi lại trong phần này là các tùy chọn chấp nhận đi trước - chấp nhận --để biểu thị sự kết thúc của các tùy chọn.

Các :, true, falsetest nội dung không chấp nhận tùy chọn và không xử lý -- đặc biệt. Các bản dựng exit, logout, break, continue, letshift chấp nhận và xử lý các đối số bắt đầu bằng - mà không yêu cầu --. Các nội dung khác chấp nhận đối số nhưng không được chỉ định là chấp nhận tùy chọn diễn giải các đối số bắt đầu bằng - là các tùy chọn không hợp lệ và yêu cầu -- để ngăn chặn sự giải thích này.

Lưu ý rằng echo không diễn giải -- có nghĩa là kết thúc các tùy chọn.

48
kenorb

Điều này đánh dấu kết thúc của danh sách tham số (tùy chọn).

47
polemon

POSIX.1-2017

12.2 Nguyên tắc Cú pháp Tiện ích

Hướng dẫn 10:

Đầu tiên -- đối số không phải là đối số tùy chọn nên được chấp nhận làm dấu phân cách cho biết kết thúc tùy chọn. Bất kỳ đối số nào sau đây phải được coi là toán hạng, ngay cả khi chúng bắt đầu bằng '-' tính cách.

http://pub.opengroup.org/onlinepub/9699919799/basingefs/V1_chap12.html#tag_12_02

18
John Doe