Làm thế nào để bỏ đặt các tham số vị trí?


11

Làm thế nào để tôi làm điều này:

set foo bar baz
unset # Something else here
echo $# # Should ouput 0

Bằng cách làm set "", $#vẫn sẽ là 1 chứ không phải 0.

Câu trả lời:


14

Ok điều này chỉ là ngu ngốc, và tôi phát hiện ra bằng cách sử dụng set --sẽ làm việc.


@Gilles: Theo trang bash man, set -không có đối số nào làm cho các tham số vị trí không thay đổi.
camh

@camh tôi phải không đồng ý. Tôi thấy điều này trong hướng dẫn: set - Nếu không có đối số nào theo tùy chọn này, thì các tham số vị trí sẽ không được đặt. Mặt khác, các tham số vị trí được đặt thành các đối số, ngay cả khi một số trong số chúng bắt đầu bằng một -.
kdub

@kdub bạn đang trích dẫn trang man cho set --. Tôi đã sử dụng set -(dấu gạch nối đơn), có nội dung: "Nếu không có đối số, các tham số vị trí không thay đổi."
camh

bạn đúng rồi. Tôi đã làm họ bối rối. màn hình của tôi làm cho bạn - trông giống như -
kdub

4

Dễ dàng bỏ đặt tất cả các tham số vị trí với:

shift $#

Để loại bỏ 3 tham số vị trí đầu tiên:

shift 3

Shift "bật" ra khỏi N tham số vị trí đầu tiên. Bằng cách sử dụng $ #, chúng tôi nhận được tổng số tham số vị trí. Lệnh này bật ra tất cả các tham số vị trí.

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.