Giriş
Açıklaması şöyle. Aslında Java'daki main metodundaki String[] argv olarak düşünülebilir.
Örnek
Komutumuzu şöyle çağıralım.
Açıklaması şöyle. Aslında Java'daki main metodundaki String[] argv olarak düşünülebilir.
Special Parameters
The shell treats several parameters specially. These parameters may only
be referenced; assignment to them is not allowed.
@ Expands to the positional parameters, starting from one. When the
expansion occurs within double quotes, each parameter expands to a
separate word. That is, "$@" is equivalent to "$1" "$2" ... If
the double-quoted expansion occurs within a word, the expansion of
the first parameter is joined with the beginning part of the origi‐
nal word, and the expansion of the last parameter is joined with
the last part of the original word. When there are no positional
parameters, "$@" and $@ expand to nothing (i.e., they are removed).
Örnek
En son parametreyi çıkartmak için şöyle yaparız
local argv=( "$@" )
last=${argv[-1]}
unset 'argv[-1]'
Örnek
Şöyle yaparız.xdg-open "$@">/dev/null 2>&1
Komutumuzu şöyle çağıralım.
mycommand -a "foo bar"
Parametreleri bir başka array değişkene atamak istersek şöyle yaparız.args=("$@")
Daha sonra değişkeni kullanmak için şöyle yaparız. Burada "${arr[@]}" ile tüm dizi dolaşılıyor ve git komutuna ilave ediliyor. Dizi dolaşmak için bash kodlama - array yazısına bakabilirsiniz.elif [[ $commit == true ]]; then
git commit "${args[@]}"
elif [[ $checkout == true ]]; then
git checkout "${args[@]}"
else
Böylece git komutu şöyle çağrılır. Array'imiz iki tane elemana sahiptir.git commit -a "foo bar"
Eğer girdiyi array yerine tek bir string'e atasaydık yani şöyle yapsaydıkargs=$@
Ve bu değişkeni "$args" olarak kullansaydık bu durumda çıktı olarak şunu elde ederdik ve bu yanlış olurdu.git commit '-a foo bar'
Hiç yorum yok:
Yorum Gönder