Làm thế nào để bình luận các lệnh đa dòng trong shell script?


19

Khi gọi các lệnh dài, nặng, việc viết chúng trong các kịch bản shell. Có một cách dễ dàng để bình luận các dòng trong các kịch bản như vậy? Tôi đã thử các phương pháp sau, nhưng không hiệu quả.

# the \ is also commented out, resulting in "command" and "--good-switch".
command \
  #--bad-switch \
  --good-switch \

# seems to send an extra argument to the command
command \
  \ #--bad-switch \
  --good-switch
shell 

1
Cái thứ hai làm cho một \ khoảng trắng được gửi dưới dạng đối số ( thoát khỏi ký tự tiếp theo, "ẩn" dòng mới nhưng làm cho khoảng trắng có ý nghĩa).
geekizard

Câu trả lời:


14

Đây có thể là một tùy chọn: lưu trữ lệnh và lập luận trong một mảng, sau đó thực hiện nó sau

# build the command
cmd=( ls
        -F
      # -a   # comment out this option temporarily
        -l
    )
# $cmd is now an array with 3 elements

# execute it
"${cmd[@]}"

Đây là bash-only
Socob

3

Tôi luôn luôn di chuyển những người nhận xét ngay sau khi lệnh.

command \
  --good-switch
# --bad-switch          with explanation here, if needed

0

Vấn đề là các dấu gạch chéo được loại bỏ trước khi dòng được phân tích cú pháp, vì vậy lệnh đầu tiên được phân tích cú pháp như thể bạn đã viết command #--bad-switch --good-switch. Nếu bạn có một chuỗi lệnh thực sự dài, ví dụ, bạn có thể viết một khối nhận xét từng dòng bên trên hoặc bên dưới nó, giải thích lần lượt từng hoặc bạn có thể lưu trữ các tham số trong một biến (mặc dù điều đó thường gây ra đau đầu khi trích dẫn ký tự đặc biệt).


1
Điều đó dường như không phải là trường hợp. --good-switchđược hiểu là một lệnh.


0

một bình luận hãm chuỗi các đường kết hợp, vì vậy giải pháp đơn giản nhất là di chuyển các dòng bình luận ở cuối danh sách.

command \
  --good-switch \
  # --bad-switch \

Nếu bạn không muốn thay đổi thứ tự, bạn có thể sử dụng :lệnh (tiện ích dấu hai chấm, không có gì) để giữ nguyên các dòng được kết nối:

command \
  `: --bad-switch `\
  --good-switch \

Tôi đã thử nghiệm với điều này:

function command { 
  echo "num args:" $#;
}
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.