Lệnh Multiline: nhận xét một dòng


11

Tôi thích sử dụng định dạng sau trong tập lệnh cho các lệnh có nhiều tham số (để dễ đọc):

docker run \
 --rm \
 -u root \
 -p 8080:8080 \
 -v jenkins-data:/var/jenkins_home \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v "$HOME":/home \
 jenkinsci/blueocean

Nhưng, đôi khi tôi muốn bình luận một trong những tham số này như sau:

# -p 8080:8080  

Điều này không hoạt động, vì EOL được hiểu là trả về và lệnh không thành công. Đã thử điều này quá:

\ # -p 8080:8080

Điều đó cũng không làm việc.

Câu hỏi: Có cách nào để nhận xét tham số, vì vậy nó vẫn nằm trên dòng riêng của nó, nhưng tôi có thể thực thi tập lệnh không?

Câu trả lời:


11

Bạn có thể thay thế một lệnh thay thế trống:

docker run \
 --rm \
 -u root \
 $(: -p 8080:8080 ) \
 -v jenkins-data:/var/jenkins_home \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v "$HOME":/home \
 jenkinsci/blueocean

1
Không dễ đọc lắm (và Vim không nhận ra đó :là lệnh trống hoặc nhận xét) nhưng hoạt động.
tricasse

Tôi thích điều đó với giải pháp này tôi vẫn có thể sao chép nó bằng chuột, dán nó và chạy nó. Bây giờ chỉ cần một macro vi để có thể thực hiện / hoàn tác thay đổi này một cách dễ dàng, cảm ơn!
Chirlo

1
@tricasse một sự thay thế :sẽ làtrue
Jeff Schaller

13

Bạn không thể bình luận một đoạn của một dòng.

Lưu ý rằng vì các dòng mới được thoát, nên lệnh thực sự là một dòng duy nhất (đối với trình phân tích cú pháp shell) và không có cách nào để nhận xét một phần của một dòng duy nhất (ngoại trừ ở cuối).

Thay vào đó, có thể chỉ cần tạo một bản sao của lệnh gốc trong trình chỉnh sửa và nhận xét hoàn toàn trong khi giữ cho lệnh đã sửa đổi không bị lỗi:

docker run \
 --rm \
 -u root \
 -v jenkins-data:/var/jenkins_home \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v "$HOME":/home \
 jenkinsci/blueocean

# Was originally:
# docker run \
# --rm \
# -u root \
# -p 8080:8080 \
# -v jenkins-data:/var/jenkins_home \
# -v /var/run/docker.sock:/var/run/docker.sock \
# -v "$HOME":/home \
# jenkinsci/blueocean

Ngoài ra, nếu bạn muốn thỉnh thoảng xóa hoặc thay đổi -ptùy chọn và đối số của nó (giả sử bashhoặc trình bao có cùng cú pháp mảng):

port=( -p 8080:8080 )

docker run \
 --rm \
 -u root \
 "${port[@]}" \
 -v jenkins-data:/var/jenkins_home \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v "$HOME":/home \
 jenkinsci/blueocean

Sau đó chỉ cần thay đổi hoặc nhận xét ra bài tập port.

Đưa điều này hơn nữa:

docker_run_args=(
    --rm 
    -u root 
    -p 8080:8080 
    -v jenkins-data:/var/jenkins_home 
    -v /var/run/docker.sock:/var/run/docker.sock 
    -v "$HOME":/home 
    jenkinsci/blueocean
)

docker run "${docker_run_args[@]}"

Trong phần gán mảng, không có vấn đề gì với việc bình luận một dòng:

docker_run_args=(
    --rm 
    -u root 
#    -p 8080:8080 
    -v jenkins-data:/var/jenkins_home 
    -v /var/run/docker.sock:/var/run/docker.sock 
    -v "$HOME":/home 
    jenkinsci/blueocean
)

docker run "${docker_run_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.