Bagaimana cara $ {! #} Bekerja di bash untuk mendapatkan argumen baris perintah terakhir?


19

Dari Panduan Script Bash Lanjutan, untuk mendapatkan argumen baris perintah terakhir:

Atau: lastarg=${!#} Ini adalah referensi tidak langsung ke $#variabel.
Perhatikan itu lastarg=${!$#}tidak berhasil.


4
Selain itu, ABS sangat disukai sebagai referensi; lihat wooledge.org/~greybot/meta/abs untuk sejarah faktoidnya di saluran irc.freenode.org # bash. The Bash-Hacker Wiki dan Wooledge BashGuide yang tidak terkenal karena kepadatan ketidakakuratan. Dalam yang terakhir, referensi tidak langsung tercakup secara rinci dalam BashFAQ # 6 ; di bekas, wiki.bash-hackers.org/syntax/pe#indirection
Charles Duffy

1
Hanya sebuah pertanyaan: Bukankah !$lebih sederhana dan sama?
unxnut

Jawaban:


27

Seperti dikatakan itu adalah referensi tidak langsung. Ambil contoh berikut:

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

Sekarang jika saya mengatur parameter posisi berikut:

$ set -- one two three

Dan $#akan mewakili jumlah total parameter posisi:

$ echo $#
3

Ini berarti ketika saya menyebutnya seperti ${!#}saya katakan beri saya nilai parameter bernama 3:

$ echo ${!#}
three
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.