Yanıtlar:
Bunun için özel bir sözdizimi var:
for i do
printf '%s\n' "$i"
done
Daha genel olarak, geçerli komut dosyasının veya işlevin parametre listesine özel değişken aracılığıyla erişilebilir $@
.
for i in "$@"; do
printf '%s\n' "$i"
done
Etrafında çift tırnak işareti gerektiğini unutmayın $@
, aksi takdirde parametreler joker karakter genişletme ve alan bölme işleminden geçer. "$@"
sihir: çift tırnaklara rağmen, parametreler kadar alana genişler.
print_arguments () {
for i in "$@"; do printf '%s\n' "$i"; done
}
print_arguments 'hello world' '*' 'special !\characters' '-n' # prints 4 lines
print_arguments '' # prints one empty line
print_arguments # prints nothing
#! /usr/bin/env bash
for f in "$@"; do
echo "$f"
done
Alıntı $@
yapmalısınız, çünkü argümanların alıntı yaparsanız boşluk (veya yeni satır, vb.) İçermesi veya a ile kaçması mümkündür \
. Örneğin:
./myscript one 'two three'
Bu alıntılar nedeniyle üç değil iki argüman. Alıntı yapmazsanız $@
, bu argümanlar kod içinde bölünür.
for f; do ...