Các đối số '-v' và '-x' có nghĩa là gì?


17

Tôi đã thấy một vài kịch bản shell với shebang sau:

#!/bin/bash -x -v 

Tuy nhiên, man bashkhông giải thích những gì những lập luận này -xvà đại diện -vcho, nếu chúng thuộc về bashtất cả.

Vì vậy, những gì -x-v(và các đối số có thể khác) có nghĩa là gì?

Câu trả lời:


26

Từ man bash(vâng, đó là một trang lớn, thường thì tìm kiếm của Google nhanh hơn):

-x Sau khi mở rộng từng lệnh đơn giản, đối với lệnh, lệnh case, lệnh chọn hoặc số học cho lệnh, hiển thị giá trị mở rộng của PS4, tiếp theo là lệnh và các đối số mở rộng hoặc danh sách từ liên quan.

Hiệu quả: khi bạn chạy một tập lệnh, nó sẽ hiển thị tất cả các hành động được thực hiện trong tập lệnh đó. Vì vậy, tất cả ifs, vòng lặp và lệnh chạy. Rất hữu ích để gỡ lỗi.

-v In các dòng đầu vào vỏ khi chúng được đọc. Khi một tập lệnh được chạy, nó sẽ in toàn bộ tập lệnh khi nó đọc tập tin. Khi bạn sử dụng shell một cách tương tác, nó sẽ hiển thị từng lệnh sau khi bạn nhấn enter.

Các trích dẫn ở trên là từ lời giải thích của setlệnh dựng sẵn trong man bash, cũng giải thích rằng các tùy chọn cho setcũng có thể được chuyển qua dưới dạng đối số (trên dòng shebang):

Các tùy chọn được tắt theo mặc định trừ khi có ghi chú khác. Sử dụng + thay vì -làm cho các tùy chọn này bị tắt. Các tùy chọn cũng có thể được chỉ định làm đối số cho một lời gọi của shell. Các tùy chọn hiện tại có thể được tìm thấy trong $-. Trạng thái trả về luôn luôn đúng trừ khi gặp tùy chọn không hợp lệ.


Ok, vậy đó là một đối số đơn giản để bash, và tôi chỉ có thể có một phiên bản khác mà không có các đối số này?
Alex

Nếu bạn đang nói về bash: Tôi nghĩ rằng tất cả các bản phát hành bash của thập kỷ trước sẽ hỗ trợ cho những lập luận này. Nếu bạn đang nói về trang người đàn ông: nó rất lớn và bạn cần biết những gì bạn đang tìm kiếm, nhưng nó ở đó (ít nhất là trên Ubuntu 13.04). Thông thường một tìm kiếm Google là nhanh hơn.
mtak

6
+1 "Tìm kiếm của Google nhanh hơn" -> /-xmột vài lần sẽ đưa bạn đến đó man(thực ra là vậy less). Bạn có thể lặp lại tìm kiếm cuối cùng với /+ mũi tên lên, nhưng bạn phải hạ trang xuống để có bất kỳ tìm kiếm hiện tại nào xuất hiện trên màn hình ( /là tìm kiếm chuyển tiếp, ?là lùi).
goldilocks

2
@ TAFKA'goldilocks 'Tôi đoán nó phụ thuộc vào bản phân phối của bạn. Trong trang hướng dẫn sử dụng bash Ubuntu 13.04, lần truy cập thứ 43 là đúng. Tìm kiếm cú đánh tiếp theo dễ dàng hơn bằng cách sử dụng ncho tìm kiếm chuyển tiếp và Ntìm kiếm ngược.
mtak

Rất tiếc, trong thực tế, tôi đã xem xét test -xtheo GIẢI THÍCH ĐIỀU KIỆN (cú đánh thứ ba), không phải set -x. -xtrong man bashmột trường hợp khá tệ nên việc trợ giúp cụ thể hơn: Nếu bạn sử dụng /^\s+-x\b, (= bắt đầu dòng + khoảng trắng + -x+ ranh giới từ) bạn sẽ nhận được đúng một trong 5 lần truy cập ... nó sẽ là 4 nhưng đối với thực tế xphù hợp X... Điều này dẫn tôi đến một câu hỏi mà tôi muốn hỏi . Dù sao, w / hầu hết các trang man ^\s+-x\bmẫu nên hoạt động trước tiên để thử chuyển đổi.
goldilocks

2

Trang bash người đàn ông không gợi ý rằng các tùy chọn này được giải thích tiếp tục xuống, trên thực tế, nhưng nó dễ dàng bỏ qua.

Do đó, vấn đề của bạn thực sự nên đọc: Phần TÙY CHỌN của trang bash man không đầy đủ. Câu trả lời sẽ là sao chép chúng hoặc tô sáng phần đầu tiên của phần TÙY CHỌN:

OPTIONS
   All  of  the  single-character shell options documented in the descrip‐
   tion of the set builtin command can be used as options when  the  shell
   is invoked.  [ ... ]

Cuối cùng, để hoàn thành việc này: chúng là các tùy chọn tiêu chuẩn cho bất kỳ trình bao POSIX nào để hiển thị mã của tập lệnh khi đọc ( -v) và khi chạy ( -x). Đầu ra sẽ xuất hiện trên thiết bị lỗi chuẩn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.