2011-09-20 32 views

Trả lời

8

Trong zsh, bạn có thể sử dụng Pparameter expansion flag hoặc điều trị @ như một mảng chứa các tham số vị trí:

last=${(P)#} 
last=${@[$#]} 

Một cách làm việc trong tất cả các vỏ Bourne-phong cách bao gồm zsh là

eval last=\$$# 

(Bạn đang đi đúng hướng, nhưng chạy echo chỉ để có được đầu ra là vô nghĩa.)

8
last=${@[-1]} 

nên thực hiện thủ thuật. Tổng quát hơn,

${@[n]} 

sẽ mang lại * n * tham số thứ, trong khi

${@[-n]} 

sẽ mang lại * n * thứ để tham số cuối cùng.

0

Việc mở rộng tham số thư đại tràng không có trong POSIX, nhưng hoạt động này trong ít nhất zsh, bash, và ksh:

${@:$#} 

Khi không có đối số, ${@:$#} được coi là $0 trong zsh và ksh nhưng như trống trong bash:

$ zsh -c 'echo ${@:$#}' 
zsh 
$ ksh -c 'echo ${@:$#}' 
ksh 
$ bash -c 'echo ${@:$#}' 

$ 
Các vấn đề liên quan