Làm thế nào để $ {! #} Hoạt động trong bash để có được đối số dòng lệnh cuối cùng?


19

Từ Hướng dẫn Bash-Scripting nâng cao, để có được đối số dòng lệnh cuối cùng:

Hoặc: lastarg=${!#} Đây là một tham chiếu gián tiếp đến $#biến.
Lưu ý rằng lastarg=${!$#}không hoạt động.


4
Bên cạnh đó, ABS khá nhíu mày như một tài liệu tham khảo; xem Wooledge.org/~greybot/meta/abs để biết lịch sử của factoid của nó trong kênh irc.freenode.org # bash. Các Wiki Bash-HackerWooledge BashGuide không phải là nổi tiếng cho mật độ không chính xác. Trong phần sau, các tham chiếu gián tiếp được đề cập chi tiết trong BashFAQ # 6 ; trước đây, wiki.bash-hackers.org/syntax/pe#indirection
Charles Duffy

1
Chỉ là một câu hỏi: Không !$đơn giản và giống nhau sao?
unxnut

Câu trả lời:


27

Như nó nói nó là một tài liệu tham khảo gián tiếp. Lấy ví dụ sau:

$ var=test
$ test='Hello, world'
$ echo ${!var}
Hello, world

Bây giờ nếu tôi đặt các tham số vị trí sau:

$ set -- one two three

$#sẽ đại diện cho tổng số tham số vị trí:

$ echo $#
3

Điều này có nghĩa là khi tôi gọi nó giống như ${!#}tôi đang nói hãy cho tôi giá trị của tham số có tên 3:

$ echo ${!#}
three
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.