Apa yang dimaksud $@
dengan parameter fungsi skrip bash?
Contoh:
function foo()
{
echo "$@" 1>&2;
}
The $@
variabel mengembang untuk semua parameter yang digunakan saat memanggil fungsi, sehingga
function foo()
{
echo "$@"
}
foo 1 2 3
akan ditampilkan 1 2 3
. Jika tidak digunakan di dalam suatu fungsi, itu menentukan semua parameter yang digunakan saat memanggil skrip. Lihat halaman manual bash untuk info lebih lanjut.
$ @ adalah salah satu dari dua representasi "parameter posisi" dalam bash, yang lainnya adalah $ *.
Keduanya, $ @ dan $ * adalah variabel bash internal yang mewakili semua parameter yang dilewatkan ke fungsi atau skrip, dengan satu perbedaan kunci , $ @ memiliki setiap parameter sebagai string yang dikutip terpisah, sedangkan $ * memiliki semua parameter sebagai string tunggal . Perbedaan itu ditunjukkan dalam kode berikut:
foo() {
while [ "$1" != "" ]; do
echo $1
shift
done
}
dollar_at () {
foo "$@"
}
dollar_star () {
foo "$*"
}
echo "Using \$@"
dollar_at a b c
echo "Using \$*"
dollar_star a b c
Keluaran:
Using $@
a
b
c
Using $*
a b c
Catatan, ketika dipanggil dengan $ *, tepat satu argumen dilewatkan ke foo (), tetapi dengan $ @ tiga argumen dilewatkan ke foo ().
Info lebih lanjut: http://tldp.org/LDP/abs/html/internalvariables.html#APPREF
Saya berharap itu berarti mengambil semua parameter input hash. Jadi jika ada 3 parameter input mereka akan tersedia dalam fungsi dalam bentuk $ 1, $ 2, $ 3
$1
,$2
dll, terlepas dari$@
.